適用於 Apache Iceberg 的 Dataflow 受管理 I/O

代管 I/O 支援 Apache Iceberg 的下列功能:

目錄
讀取功能 批次讀取
寫入功能

如果是 Apache Iceberg 專用 BigQuery 資料表,請搭配使用 BigQueryIO 連接器和 BigQuery Storage API。資料表必須已存在,不支援動態建立資料表。

需求條件

下列 SDK 支援 Apache Iceberg 的代管 I/O:

  • Java 適用的 Apache Beam SDK 2.58.0 以上版本
  • Python 適用的 Apache Beam SDK 2.61.0 以上版本

設定

Apache Iceberg 的代管 I/O 支援下列設定參數:

ICEBERG 閱讀

設定 類型 說明
table str Iceberg 資料表的 ID。
catalog_name str 資料表所在目錄的名稱。
catalog_properties map[str, str] 用於設定 Iceberg 目錄的屬性。
config_properties map[str, str] 傳遞至 Hadoop 設定的屬性。
drop list[str] 要排除讀取的資料欄名稱子集。如果為空值或空白,系統會讀取所有資料欄。
篩選器 str 類似 SQL 的述詞,可在掃描時篩選資料。例如:「id > 5 AND status = 'ACTIVE'」。使用 Apache Calcite 語法:https://calcite.apache.org/docs/reference.html
保留 list[str] 要讀取的資料欄名稱子集。如果為空值或空白,系統會讀取所有資料欄。

ICEBERG 撰寫

設定 類型 說明
table str 完整資料表 ID。您也可以提供範本,將資料寫入多個動態目的地,例如:`dataset.my_{col1}_{col2.nested}_table`。
自動分片 boolean 啟用動態分片功能,根據資料量自動調整平行寫入器數量。這項功能會將分區進一步細分為多個分片,處理資料偏斜問題,避免高輸送量寫入期間發生瓶頸。僅適用於「雜湊」分配模式。
catalog_name str 資料表所在目錄的名稱。
catalog_properties map[str, str] 用於設定 Iceberg 目錄的屬性。
config_properties map[str, str] 傳遞至 Hadoop 設定的屬性。
direct_write_byte_limit int32 針對串流管道,設定資料組合改用直接寫入路徑時的資料大小上限。
distribution_mode str 定義寫入資料的分布情形。支援的分配方式: - 無:不隨機排序資料列 (預設) - 雜湊:在寫入資料前,依據分區鍵隨機排序資料列
drop list[str] 寫入前要從輸入記錄捨棄的欄位名稱清單,與「keep」和「only」互斥。
保留 list[str] 要保留於輸入記錄的欄位名稱清單。寫入之前,其他欄位都會捨棄。與「drop」和「only」互斥。
僅限 str 要寫入的單一記錄欄位名稱,與「keep」和「drop」互斥。
partition_fields list[str] 用於建立分區規格的欄位,該規格會在建立資料表時套用。以欄位「foo」來說,可用的分區轉換作業包括:
  • foo
  • truncate(foo, N)
  • bucket(foo, N)
  • hour(foo)
  • day(foo)
  • month(foo)
  • year(foo)
  • void(foo)

如要進一步瞭解分區轉換,請前往 https://iceberg.apache.org/spec/#partition-transforms

sort_fields list[str] 用於設定資料表排序順序的欄位,會在建立資料表時套用。每個項目的格式為 <term> [asc|desc] [nulls first|nulls last],其中 <term> 是欄位名稱或其中一個分割轉換 (例如 bucket(col, 4)day(ts))。方向預設為遞增;空值順序預設為遞增時空值優先,遞減時空值在後。注意:這會將資料表的宣告排序順序設為中繼資料,不會導致 Beam 在寫入前實際排序記錄。 如要進一步瞭解排序順序,請前往 https://iceberg.apache.org/spec/#sort-orders
table_properties map[str, str] 建立資料表時要設定的 Iceberg 資料表屬性。 如要進一步瞭解資料表屬性,請前往 https://iceberg.apache.org/docs/latest/configuration/#table-properties
triggering_frequency_seconds int32 設定串流管道的快照產生頻率。

後續步驟

如需詳細資訊和程式碼範例,請參閱下列主題: