Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Bekerja dengan spesifikasi format tabel Iceberg versi 3
Versi terbaru dari spesifikasi format tabel Apache Iceberg adalah versi 3. Versi ini memperkenalkan kemampuan canggih untuk membangun data lake berskala petabyte dengan peningkatan kinerja dan pengurangan biaya operasional. Ini mengatasi kemacetan kinerja umum yang dihadapi dengan versi 2, terutama seputar pembaruan batch dan operasi penghapusan kepatuhan.
AWS memberikan dukungan untuk vektor penghapusan dan garis keturunan baris seperti yang didefinisikan dalam spesifikasi Iceberg versi 3. Fitur-fitur ini tersedia dengan Apache Spark berikut ini. Layanan AWS
| Layanan AWS | Dukungan versi 3 |
|---|---|
|
Amazon EMR rilis 7.12 dan yang lebih baru |
|
|
Ya |
|
|
AWS Glue: Iceberg REST API, pemeliharaan tabel |
Ya |
|
Ya |
|
|
Tabel Amazon S3: Iceberg REST API, pemeliharaan tabel |
Ya |
|
Tidak |
Fitur utama dalam versi 3
Vektor penghapusan menggantikan file hapus posisi yang digunakan dalam versi 2 dengan format biner efisien yang disimpan sebagai file Puffin. Ini menghilangkan amplifikasi tulis dari pembaruan batch acak dan penghapusan kepatuhan Peraturan Perlindungan Data Umum (GDPR), dan secara signifikan mengurangi biaya pemeliharaan data baru. Organizations yang memproses pembaruan frekuensi tinggi akan melihat peningkatan langsung dalam kinerja penulisan dan mengurangi biaya penyimpanan dari lebih sedikit file kecil.
Garis keturunan baris memungkinkan pelacakan perubahan yang tepat di tingkat baris. Sistem hilir Anda dapat memproses perubahan secara bertahap, mempercepat jalur data, dan mengurangi biaya komputasi untuk alur kerja pengambilan data perubahan (CDC). Kemampuan bawaan ini menghilangkan kebutuhan akan implementasi pelacakan perubahan khusus.
Kompatibilitas versi
Versi 3 mempertahankan kompatibilitas mundur dengan tabel versi 2. Layanan AWS mendukung tabel versi 2 dan versi 3 secara bersamaan, sehingga Anda dapat:
-
Jalankan kueri di tabel versi 2 dan versi 3.
-
Tingkatkan tabel versi 2 yang ada ke versi 3 tanpa penulisan ulang data.
-
Jalankan kueri perjalanan waktu yang mencakup snapshot versi 2 dan versi 3.
-
Gunakan evolusi skema dan partisi tersembunyi di seluruh versi tabel.
Memulai dengan versi 3
Prasyarat
Sebelum bekerja dengan tabel versi 3, pastikan Anda memiliki:
-
An Akun AWS dengan izin AWS Identity and Access Management (IAM) yang sesuai.
-
Akses ke satu atau beberapa layanan AWS analitik (Amazon EMR, notebook AWS Glue Amazon SageMaker Unified Studio, atau Amazon S3 Tables).
-
Bucket S3 untuk menyimpan data tabel dan metadata.
-
Bucket meja untuk memulai dengan Tabel Amazon S3 atau bucket S3 serba guna jika Anda membangun infrastruktur Gunung Es Anda sendiri.
-
AWS Glue Katalog yang dikonfigurasi.
Membuat tabel versi 3
Membuat tabel baru
Untuk membuat tabel Iceberg versi 3 baru, atur properti format-version tabel ke 3.
Menggunakan Spark SQL:
CREATE TABLE IF NOT EXISTS myns.orders_v3 ( order_id bigint, customer_id string, order_date date, total_amount decimal(10,2), status string, created_at timestamp ) USING iceberg TBLPROPERTIES ( 'format-version' = '3' )
Memutakhirkan tabel versi 2 ke versi 3
Anda dapat memutakhirkan tabel versi 2 yang ada ke versi 3 secara atom tanpa menulis ulang data.
Menggunakan Spark SQL:
ALTER TABLE myns.existing_table SET TBLPROPERTIES ('format-version' = '3')
penting
Versi 3 adalah upgrade satu arah. Setelah tabel ditingkatkan dari versi 2 ke versi 3, itu tidak dapat diturunkan kembali ke versi 2 melalui operasi standar.
Apa yang terjadi selama upgrade:
-
Cuplikan metadata baru dibuat secara atom.
-
File data Parket yang ada digunakan kembali.
-
Bidang garis keturunan baris ditambahkan ke metadata tabel.
Setelah peningkatan:
-
Pemadatan berikutnya akan menghapus file hapus versi lama 2.
-
Modifikasi baru akan menggunakan file vektor penghapusan versi 3.
Pemutakhiran tidak melakukan pengisian ulang historis dari catatan pelacakan perubahan garis keturunan baris.
Mengaktifkan vektor penghapusan
Untuk memanfaatkan vektor penghapusan untuk pembaruan, penghapusan, dan penggabungan, konfigurasikan mode tulis Anda.
Menggunakan Spark SQL:
ALTER TABLE myns.orders_v3 SET TBLPROPERTIES ('format-version' = '3', 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )
Pengaturan ini memastikan bahwa operasi pembaruan, penghapusan, dan penggabungan membuat file vektor penghapusan alih-alih menulis ulang seluruh file data.
Menggunakan garis keturunan baris untuk melacak perubahan
Versi 3 secara otomatis menambahkan bidang metadata garis keturunan baris untuk melacak perubahan.
Menggunakan Spark SQL:
# Query with parameter value provided last_processed_sequence = 47 SELECT id, data, _row_id, _last_updated_sequence_number FROM myns.orders_v3 WHERE _last_updated_sequence_number > :last_processed_sequence
_row_idBidang ini secara unik mengidentifikasi setiap baris, dan _last_updated_sequence_number melacak saat baris terakhir dimodifikasi. Gunakan bidang ini untuk:
-
Identifikasi baris yang diubah untuk pemrosesan inkremental.
-
Lacak garis keturunan data untuk kepatuhan.
-
Optimalkan saluran pipa CDC.
-
Kurangi biaya komputasi dengan hanya memproses perubahan.
Praktik terbaik untuk versi 3
Kapan menggunakan versi 3
Pertimbangkan untuk meningkatkan ke, atau memulai dengan, versi 3 saat:
-
Anda sering melakukan pembaruan atau penghapusan batch.
-
Anda harus memenuhi persyaratan penghapusan GDPR atau kepatuhan.
-
Beban kerja Anda melibatkan peningkatan frekuensi tinggi.
-
Anda memerlukan alur kerja CDC yang efisien.
-
Anda ingin mengurangi biaya penyimpanan dari file kecil.
-
Anda membutuhkan kemampuan pelacakan perubahan yang lebih baik.
Mengoptimalkan kinerja tulis
-
Aktifkan vektor penghapusan untuk beban kerja pembaruan-berat:
SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' ) -
Konfigurasikan ukuran file yang sesuai:
SET TBLPROPERTIES ( 'write.target-file-size-bytes' = '536870912' — 512 MB )
Mengoptimalkan kinerja baca
-
Gunakan garis keturunan baris untuk pemrosesan inkremental.
-
Gunakan perjalanan waktu untuk mengakses data historis tanpa menyalin.
-
Aktifkan pengumpulan statistik untuk perencanaan kueri yang lebih baik.
Strategi migrasi
Saat Anda bermigrasi dari versi 2 ke versi 3, ikuti praktik terbaik berikut ini:
-
Uji di lingkungan non-produksi terlebih dahulu untuk memvalidasi proses dan kinerja peningkatan.
-
Tingkatkan selama periode aktivitas rendah untuk meminimalkan dampak pada operasi bersamaan.
-
Pantau kinerja awal, dan lacak metrik setelah peningkatan.
-
Jalankan pemadatan untuk mengkonsolidasikan file hapus setelah peningkatan.
-
Perbarui dokumentasi tim Anda untuk mencerminkan fitur versi 3.
Pertimbangan kompatibilitas
-
Versi mesin — Pastikan bahwa semua mesin yang mengakses tabel mendukung versi 3.
-
Alat pihak ketiga — Verifikasi kompatibilitas versi 3 alat Anda sebelum Anda meningkatkan.
-
Strategi Backup — Uji prosedur pemulihan berbasis snapshot.
-
Pemantauan - Perbarui dasbor pemantauan untuk metrik spesifik versi 3.
Pemecahan masalah
Masalah umum
Kesalahan: “format-versi 3 tidak didukung”
-
Verifikasi bahwa versi mesin Anda mendukung versi 3. Untuk spesifik, lihat tabel di awal bagian ini.
-
Periksa kompatibilitas katalog.
-
Pastikan Anda menggunakan versi terbaru Layanan AWS.
Degradasi kinerja setelah peningkatan
-
Verifikasi bahwa tidak ada kegagalan pemadatan pemadatan. Untuk informasi selengkapnya, lihat Pencatatan dan pemantauan untuk Tabel S3 di dokumentasi Amazon S3.
-
Konfirmasikan bahwa vektor penghapusan diaktifkan. Properti berikut harus ditetapkan:
SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )Anda dapat memverifikasi properti tabel dengan kode berikut:
DESCRIBE FORMATTED myns.orders_v3 -
Tinjau strategi partisi Anda. Over-partisi dapat menyebabkan file kecil. Jalankan kueri berikut untuk mendapatkan ukuran file rata-rata untuk tabel Anda:
SELECT avg(file_size_in_bytes) as avg_file_size_bytes FROM myns.orders_v3.files
Ketidakcocokan dengan alat pihak ketiga
-
Verifikasi bahwa alat ini mendukung spesifikasi versi 3.
-
Pertimbangkan untuk mempertahankan tabel versi 2 untuk alat yang tidak didukung.
-
Hubungi vendor alat untuk garis waktu dukungan versi 3 mereka.
Mendapatkan bantuan
-
Untuk masalah Layanan AWS-spesifik, hubungi AWS Dukungan
. -
Untuk mendapatkan bantuan dari komunitas Iceberg, gunakan saluran Iceberg Slack
. -
Untuk informasi tentang penggunaan Layanan AWS untuk mengelola beban kerja analitik Anda, lihat Analytics di AWS
.
Penetapan harga
Ketersediaan
Dukungan spesifikasi format tabel Iceberg versi 3 tersedia di semua tempat Wilayah AWS
Amazon EMR,, AWS Glue AWS Glue Data Catalog, dan Tabel S3 beroperasi. Untuk ketersediaan Wilayah, lihat Layanan AWS berdasarkan Wilayah