如何在Airflow上執行Pentaho Carte
圖/文:Rod chen
Execute pentaho carte on airflow
本文章將會教你如何在 Airflow 安裝 pentaho PDI 套件以及如何使用 airflow的 operator 去呼叫 carte 執行 ETL 任務。
以下的安裝環境為 CentOS-8
Prerequisites
- 有 docker、docker compose 的環境
- 有 Airflow 的環境 (建議 2.3.3 以上)
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.3.4/docker-compose.yaml'
- Airflow 有安裝
airflow-pentaho-plugin
python 套件 - 有 Pentaho spoon 的執行檔(方便設定、偵錯)
- 已建立 Pentaho 的 repository (此範例名為 pdi_repo_conn)
- 已建立 carte(salve server)連線資訊
Airflow Connection 設定
在 Airflow 中,我們為了避免連線資訊被用明碼外洩,通常都會透過 Airflow 內建的 connection 去建立連線資訊。
從 Airflow 的 webserver 進去後點選 Admin
再到 Connection
新建一個連線資訊,以下為設定檔。
Connection id : 預設為 pdi_default (設別的名稱可能連不上)
Connection Type : 選擇 HTTP
Host : 輸入放置 pentaho 的主機位置。
Login, Password : 輸入 repository 的帳號密碼。
Extra : 額外的連線資訊,包含你的 pentaho 檔案位置、repository 名稱、carte(slave server) 的帳密。
{“pentaho_home”: “/root/data-integration”,
“rep”: “pdi_repo_conn”,
“carte_username”: “cluster”,
“carte_password”: “cluster”}
這個 pentaho_home 的位置就是你的 pentaho server 所放的目錄。
/root/data-integration
下面這張 Airflow Connection 同時會放 penataho spoon 的連線資訊,方便比較。
這裡要注意一件事,當你按下 Test
有可能會出現測試失敗,所以你可以直接儲存該設定,不要進行測試。
DAG 連結 Connection 設定
在開始寫 DAG 之前,我們先在 pentaho spoon 上面創建一個簡單的 Transformations,並且命名為 test_trans
。
裡面寫了兩個動作先是創建一個 row 再來給一個 dummy (什麼都不做)。
打開 spoon 的 repository explorer (這裡已經連線到 pdi_repo_conn),左側會有個 folders 目錄,你也可以在裡面再創建新資料夾,但我們直接把 test_trans 存在底下,所以它的路徑就是 /test_trans
。
create a transformation and named it test_trans on pentaho spoon
再來進到 airflow 的 dags 資料夾,創建一個 dag,下面為範例。
因為我們建立的是 transformation,所以要使用 CarteTransOperator
,注意在 CarteTransOperator
裡面的 conn_id
就是前面在 Airflow Connection 設定的 Connection id,而 trans
參數,這裡就是你要呼叫的 transformation 路徑與名字 /test_trans
。
當我們執行該 DAG 之後,可以在該 log 看到執行相關 ETL 動作的紀錄了。
訂閱偉康科技洞察室部落格,掌握最新科技趨勢!