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

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

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

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

需求條件

下列 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`。
catalog_name str 包含資料表的目錄名稱。
catalog_properties map[str, str] 用於設定 Iceberg 目錄的屬性。
config_properties map[str, str] 傳遞至 Hadoop 設定的屬性。
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

table_properties map[str, str] 建立資料表時要在資料表上設定的 Iceberg 資料表屬性。 如要進一步瞭解資料表屬性,請前往 https://iceberg.apache.org/docs/latest/configuration/#table-properties
triggering_frequency_seconds int32 如果是串流管道,則設定產生快照的頻率。

後續步驟

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