代管 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」來說,可用的分區轉換作業包括:
如要進一步瞭解分區轉換,請前往 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
|
設定串流管道的快照產生頻率。 |
後續步驟
如需詳細資訊和程式碼範例,請參閱下列主題: