物件儲存 XCom 後端¶
預設的 XCom 後端是 BaseXCom 類,它將 XCom 儲存在 Airflow 資料庫中。這對於小的值是沒問題的,但對於大的值或大量的 XCom 來說可能會有問題。
要啟用將 XCom 儲存在物件儲存中,您可以將 xcom_backend 配置選項設定為 airflow.providers.common.io.xcom.backend.XComObjectStorageBackend。您還需要將 xcom_objectstorage_path 設定為所需的位置。連線 ID 是從您提供的 URL 的使用者部分獲取的,例如 xcom_objectstorage_path = s3://conn_id@mybucket/key。此外,xcom_objectstorage_threshold 要求大於 -1。任何小於閾值(以位元組為單位)的物件將儲存在資料庫中,而任何大於閾值的物件將儲存在物件儲存中。這將允許混合設定。如果 XCom 儲存在物件儲存中,則會在資料庫中儲存一個引用。最後,您可以將 xcom_objectstorage_compression 設定為 fsspec 支援的壓縮方法,例如 zip 或 snappy,以便在將資料儲存到物件儲存之前對其進行壓縮。
例如,以下配置會將任何大於 1MB 的內容儲存在 S3 中,並使用 gzip 對其進行壓縮
[core]
xcom_backend = airflow.providers.common.io.xcom.backend.XComObjectStorageBackend
[common.io]
xcom_objectstorage_path = s3://conn_id@mybucket/key
xcom_objectstorage_threshold = 1048576
xcom_objectstorage_compression = gzip
使用本地檔案系統的另一個示例
[core]
xcom_backend = airflow.providers.common.io.xcom.backend.XComObjectStorageBackend
[common.io]
xcom_objectstorage_path = file://airflow/xcoms
本地檔案系統方案也可以使用,它與上面顯示的檔案相同,參見 fsspec
[core]
xcom_backend = airflow.providers.common.io.xcom.backend.XComObjectStorageBackend
[common.io]
xcom_objectstorage_path = local://airflow/xcoms
注意
壓縮需要您的 Python 環境中安裝了相應的支援。例如,要使用 snappy 壓縮,您需要安裝 python-snappy。Zip、gzip 和 bz2 可以直接使用。