Apache Beam I/O 連接器最佳做法

Dataflow 中的資料處理作業可以高度平行化。Dataflow 會自動處理大部分的平行處理作業。I/O 連接器位於管道與架構其他部分 (例如檔案儲存空間、資料庫和訊息系統) 之間的界線。因此,I/O 連接器通常有特定的平行處理考量。

常見的最佳做法

以下列出在 Dataflow 中使用 I/O 連接器的一般最佳做法。

  • 請參閱管道中連接器的 Javadoc、Pydoc 或 Go 說明文件。詳情請參閱 Apache Beam 說明文件中的 I/O 連接器

  • 使用最新版 Apache Beam SDK。我們會持續改善 I/O 連接器,新增功能並修正已知問題。

  • 開發管道時,請務必平衡作業的平行處理。如果工作平行處理數量過少,速度可能會較慢,且資料可能會在來源中累積。不過,如果平行處理作業過多,可能會導致接收器無法負荷過多的要求。

  • 請勿依賴元素的順序,一般來說,Dataflow 不保證集合中的元素順序。

  • 如果所選 SDK 沒有 I/O 連接器,請考慮使用跨語言架構,從其他 SDK 使用 I/O 連接器。此外,連接器在 SDK 之間不一定具有同等功能。如果其他 SDK 的連接器提供您需要的特徵,您可以將其做為跨語言轉換。

  • 一般來說,編寫自訂 I/O 連接器並不容易。盡可能使用現有的連接器。如需實作自訂 I/O 連接器,請參閱「開發新的 I/O 連接器」。

  • 如果管道失敗,請檢查 I/O 連接器記錄的錯誤。請參閱「排解 Dataflow 錯誤」。

  • 從 Dataflow 寫入連接器時,請考慮使用 ErrorHandler 處理任何失敗的寫入或格式錯誤的讀取作業。在 Apache Beam 2.55.0 以上版本中,下列 Java I/O 支援這類錯誤處理機制:BigQueryIO、BigtableIO、PubSubIO、KafkaIO、FileIO、TextIO 和 AvroIO。

個別 I/O 連接器的最佳做法

下列主題列出個別 I/O 連接器的最佳做法:

I/O 連接器讀取寫入
Apache Iceberg 從 Apache Iceberg 讀取 寫入 Apache Iceberg
Apache Kafka 從 Apache Kafka 讀取 寫入 Apache Kafka
BigQuery 讀取 BigQuery 中的資料 寫入 BigQuery
Bigtable 從 Bigtable 讀取資料 寫入 Bigtable
Cloud Storage 從 Cloud Storage 讀取 寫入 Cloud Storage
Pub/Sub 從 Pub/Sub 讀取資料 寫入 Pub/Sub

Google 支援的 I/O 連接器

下表列出 Dataflow 支援的 Apache Beam I/O 連接器。如要查看 Apache Beam I/O 連接器的完整清單,包括 Apache Beam 社群開發的連接器,以及其他執行器支援的連接器,請參閱 Apache Beam 說明文件中的「I/O connectors」(I/O 連接器)。

I/O 連接器名稱 Java Python Go
AvroIO 支援 支援 支援
BigQueryIO 支援 支援 支援
BigTableIO 支援 支援水槽 支援水槽
DatastoreIO 支援 支援 支援
FhirIO (醫療照護) 支援 無法使用 支援
FileIO 支援 支援 支援
GcsFileSystem 支援 支援 支援
JdbcIO 支援 跨語言支援 跨語言支援
KafkaIO 支援 跨語言支援 跨語言支援
LocalFileSystem 支援 支援 支援
ParquetIO 支援 支援 支援
PubSubIO 支援 支援 支援
SpannerIO 支援 跨語言支援 支援
TextIO 支援 支援 支援
TFRecordIO 支援 支援 無法使用

後續步驟