物件儲存 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
注意
壓縮需要您的 Python 環境中安裝了對它的支援。例如,要使用 snappy
壓縮,您需要安裝 python-snappy
。Zip、gzip 和 bz2 可以直接使用。