I/O terkelola Dataflow untuk Apache Iceberg

I/O Terkelola mendukung kemampuan berikut untuk Apache Iceberg:

Katalog
  • Hadoop
  • Hive
  • Katalog berbasis REST
  • Metastore BigQuery (memerlukan Apache Beam SDK 2.62.0 atau yang lebih baru jika tidak menggunakan Runner v2)
Kemampuan membaca Membaca batch
Kemampuan menulis

Untuk tabel BigQuery untuk Apache Iceberg, gunakan konektor BigQueryIO dengan BigQuery Storage API. Tabel harus sudah ada; pembuatan tabel dinamis tidak didukung.

Persyaratan

SDK berikut mendukung I/O terkelola untuk Apache Iceberg:

  • Apache Beam SDK untuk Java versi 2.58.0 atau yang lebih baru
  • Apache Beam SDK untuk Python versi 2.61.0 atau yang lebih baru

Konfigurasi

I/O Terkelola untuk Apache Iceberg mendukung parameter konfigurasi berikut:

Baca ICEBERG

Konfigurasi Jenis Deskripsi
table str ID tabel Iceberg.
catalog_name str Nama katalog yang berisi tabel.
catalog_properties map[str, str] Properti yang digunakan untuk menyiapkan katalog Iceberg.
config_properties map[str, str] Properti yang diteruskan ke Konfigurasi Hadoop.
drop list[str] Subset nama kolom yang akan dikecualikan dari pembacaan. Jika null atau kosong, semua kolom akan dibaca.
filter str Predikat seperti SQL untuk memfilter data pada waktu pemindaian. Contoh: "id > 5 AND status = 'ACTIVE'". Menggunakan sintaksis Apache Calcite: https://calcite.apache.org/docs/reference.html
keep list[str] Subset nama kolom yang akan dibaca secara eksklusif. Jika null atau kosong, semua kolom akan dibaca.

Tulis ICEBERG

Konfigurasi Jenis Deskripsi
table str ID tabel yang sepenuhnya memenuhi syarat. Anda juga dapat memberikan template untuk menulis ke beberapa tujuan dinamis, misalnya: `dataset.my_{col1}_{col2.nested}_table`.
autosharding boolean Mengaktifkan sharding dinamis untuk menyesuaikan jumlah penulis paralel secara otomatis berdasarkan volume data. Fitur ini menangani kecondongan data dengan membagi partisi lebih lanjut menjadi beberapa shard untuk mencegah bottleneck selama penulisan dengan throughput tinggi. Hanya tersedia dengan mode distribusi 'hash'.
catalog_name str Nama katalog yang berisi tabel.
catalog_properties map[str, str] Properti yang digunakan untuk menyiapkan katalog Iceberg.
config_properties map[str, str] Properti yang diteruskan ke Konfigurasi Hadoop.
direct_write_byte_limit int32 Untuk pipeline streaming, menetapkan batas untuk mengangkat paket ke jalur penulisan langsung.
distribution_mode str Menentukan distribusi data tulis. Distribusi yang didukung: - none: jangan acak baris (default) - hash: acak baris berdasarkan kunci partisi sebelum menulis data
drop list[str] Daftar nama kolom yang akan dihapus dari rekaman input sebelum menulis. Tidak dapat muncul bersamaan dengan 'keep' dan 'only'.
keep list[str] Daftar nama kolom yang akan disimpan dalam rekaman input. Semua kolom lainnya akan dihapus sebelum menulis. Tidak dapat muncul bersamaan dengan 'drop' dan 'only'.
only str Nama satu kolom rekaman yang akan ditulis. Tidak dapat muncul bersamaan dengan 'keep' dan 'drop'.
partition_fields list[str] Kolom yang digunakan untuk membuat spesifikasi partisi yang diterapkan saat tabel dibuat. Untuk kolom 'foo', transformasi partisi yang tersedia adalah:
  • foo
  • truncate(foo, N)
  • bucket(foo, N)
  • hour(foo)
  • day(foo)
  • month(foo)
  • year(foo)
  • void(foo)

Untuk mengetahui informasi selengkapnya tentang transformasi partisi, buka https://iceberg.apache.org/spec/#partition-transforms.

sort_fields list[str] Kolom yang digunakan untuk menetapkan urutan pengurutan tabel, yang diterapkan saat tabel dibuat. Setiap entri memiliki format <term> [asc|desc] [nulls first|nulls last], dengan <term> adalah nama kolom atau salah satu transformasi partisi (misalnya, bucket(col, 4), day(ts)). Arah defaultnya adalah menaik; urutan null defaultnya adalah nulls-first untuk menaik dan nulls-last untuk menurun. Catatan: tindakan ini menetapkan urutan pengurutan yang dideklarasikan tabel sebagai metadata; tindakan ini tidak menyebabkan Beam mengurutkan rekaman secara fisik sebelum menulis. Untuk mengetahui informasi selengkapnya tentang urutan pengurutan, buka https://iceberg.apache.org/spec/#sort-orders.
table_properties map[str, str] Properti tabel Iceberg yang akan ditetapkan pada tabel saat dibuat. Untuk mengetahui informasi selengkapnya tentang properti tabel, buka https://iceberg.apache.org/docs/latest/configuration/#table-properties.
triggering_frequency_seconds int32 Untuk pipeline streaming, menetapkan frekuensi pembuatan snapshot.

Langkah berikutnya

Untuk mengetahui informasi selengkapnya dan contoh kode, lihat topik berikut: