Cloud Composer 3 | Cloud Composer 2 | Cloud Composer�
本頁說明何謂 Airflow 舊版移植供應商套件,以及如何在 DAG 中使用這些套件。
向後移植供應商套件是 Airflow 2 版本的運算子、轉移、感應器、掛鉤和密碼,以 PyPI 模組形式封裝。
為簡化說明,本文僅著重於運算子。您可以像運算子一樣,使用向後移植套件中的所有其他內容。
反向移植供應商套件可解決重要問題:您不必將 Airflow 環境升級至較新版本,就能取得運算子、轉移、感應器和掛鉤的新功能和安全性更新。舉例來說,Airflow 2 提供 Google 的供應商套件。您可以在 Airflow 1.10.* 環境中,從這個套件的向後移植版本匯入運算子。
在 Apache Airflow 導入向後移植供應商套件的概念之前,運算子是 Airflow 的不可或缺部分。如要取得新版運算子,您需要使用新版 Airflow。因此您必須將 Cloud Composer 環境升級至較新版本。Airflow 2 捨棄了這個模型,並導入供應商套件。Airflow 2 的供應商套件是 PyPI 模組,內含特定供應商 (例如 Google) 的運算子、轉移、感應器、掛鉤和密鑰。如果您使用 Airflow 1.10.*,就能享有這項變更帶來的優勢,並使用提供者套件的回溯移植版本。
使用預先安裝的 Backport 套件
Cloud Composer 映像檔已安裝部分反向移植套件。您不需要在環境中安裝這些回溯移植套件。 只要確保您從 DAG 程式碼中的向後移植套件匯入運算子即可,詳情請參閱本頁稍後內容。
如要查看環境中可用的 Backport 套件,請參閱環境適用的 Cloud Composer 映像檔中的套件清單。
環境中每個預先安裝的回溯移植套件都有特定版本。 如要使用其他版本,請更新環境並指定所需版本。我們不建議降級預先安裝的 Backport 套件。只有在發現新版有問題時,才需要安裝舊版。您無法解除安裝預先安裝的 Backport 套件,只能變更已安裝的版本。
安裝及升級 Backport 套件
如要安裝或升級 Backport 套件,請執行下列指令:
安裝或升級套件,就像其他 PyPI 套件一樣。
視需要安裝跨供應商套件依附元件。這些是額外的依附元件,您可能需要這些元件才能使用回溯移植套件的所有功能。
舉例來說,如要使用
apache-airflow-backport-providers-google
中的SalesforceToGcsOperator
,您需要[salesforce]
額外項目。安裝apache-airflow-backport-providers-google
,並在「額外項目與版本」欄位中指定[salesforce]
額外項目。
在 DAG 中從向後移植供應商套件匯入運算子
如要查看 Backport 套件中的內容清單,請前往 PyPI.org 的 Backport 套件頁面。舉例來說,apache-airflow-backport-providers-google
的頁面會列出這個套件的運算子、轉移、感應器、掛鉤和密鑰。
向後移植供應商套件會導入新的運算子、移動的運算子和其他內容。這兩種內容有所不同,詳情請見下文。
匯入新運算子
新運算子是指 Airflow 1.10.* 中沒有的運算子。如果您嘗試匯入這類運算子,但沒有回溯移植套件,就會收到匯入錯誤訊息。
如要使用回溯移植套件中的新運算子,請從對應的 airflow.providers.*
套件匯入,詳情請參閱 PyPI.org 上這個回溯移植套件的頁面。
以下範例會從 apache-airflow-backport-providers-google
套件匯入新運算子:
from airflow.providers.google.cloud.operators.bigquery_dts import (
BigQueryCreateDataTransferOperator,
BigQueryDeleteDataTransferConfigOperator,
)
匯入已移動的運算子
遷移的運算子是指 Airflow 1.10.* 中已有的運算子。安裝向後移植運算子套件後,您可以匯入運算子的兩個不同版本。其中一個版本與 Airflow 綁定,另一個版本則是已移轉的運算子。如要使用已移動的運算子,請使用新的匯入路徑匯入。
如要使用向後移植套件中已移動的運算子,請從對應的 airflow.contrib.*
套件匯入,如 PyPI.org 上這個向後移植套件的頁面所述。
以下範例會從 apache-airflow-backport-providers-google
套件匯入已移動的運算子:
from airflow.contrib.operators.bigquery_operator import (
BigQueryCreateEmptyDatasetOperator,
BigQueryOperator,
)