如何在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 動作的紀錄了。

訂閱偉康科技洞察室部落格,掌握最新科技趨勢!

立即訂閱電子報

掌握最新科技趨勢!