I/O Terkelola mendukung kemampuan berikut untuk Apache Iceberg:
| Katalog |
|
|---|---|
| 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:
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:
- Membaca dari Apache Iceberg
- Membaca dari Apache Iceberg (UI pembuat tugas)
- Menulis ke Apache Iceberg