View a markdown version of this page

Bekerja dengan Apache Iceberg V3 - Amazon Simple Storage Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Bekerja dengan Apache Iceberg V3

Apache Iceberg Version 3 (V3) adalah versi terbaru dari spesifikasi format tabel Apache Iceberg, memperkenalkan kemampuan canggih untuk membangun data lake skala petabyte dengan peningkatan kinerja dan pengurangan biaya operasional. V3 mengatasi hambatan kinerja umum yang ditemui dengan Versi 2 (V2), terutama seputar pembaruan batch dan penghapusan kepatuhan.

AWS menyediakan dukungan untuk vektor penghapusan, garis keturunan baris, dan tipe data varian seperti yang didefinisikan dalam spesifikasi Apache Iceberg Version 3 (V3). Anda dapat menggunakan fitur-fitur ini dengan Apache Spark di Amazon EMR, AWS Glue ETL, Amazon SageMaker Unified Studio Notebooks, dan Apache Iceberg tabel di AWS Glue Data Catalog, termasuk Tabel Amazon S3. Jenis data varian khusus untuk Tabel S3.

Fitur Utama di V3

Vektor Penghapusan

Mengganti file hapus posisi V2 dengan format biner efisien yang disimpan sebagai file Puffin. Ini menghilangkan amplifikasi tulis dari pembaruan batch acak dan penghapusan kepatuhan GDPR, secara signifikan mengurangi overhead pemeliharaan data segar. Organisasi yang memproses pembaruan frekuensi tinggi akan melihat peningkatan langsung dalam kinerja penulisan dan pengurangan biaya penyimpanan dari lebih sedikit file kecil.

Row-lineage

Mengaktifkan pelacakan perubahan yang tepat di tingkat baris. Sistem hilir Anda dapat memproses perubahan secara bertahap, mempercepat pipeline data, dan mengurangi biaya komputasi untuk alur kerja pengambilan data perubahan (CDC). Kemampuan bawaan ini menghilangkan kebutuhan akan implementasi pelacakan perubahan khusus.

Jenis data varian

Dengan tipe data varian, Anda dapat menulis data semi-terstruktur seperti JSON langsung di tabel Iceberg tanpa menentukan skema tetap terlebih dahulu. Mesin yang kompatibel dengan V3 merobek data semi-terstruktur Anda menjadi kolom tersembunyi saat Anda menulisnya, menghasilkan statistik kolom Parquet yang digunakan mesin kueri untuk pengoptimalan seperti pemangkasan file. Ini mengurangi data yang dipindai kueri analitis Anda. S3 Tables menyediakan pemeliharaan tabel berkelanjutan untuk kolom varian, termasuk pemadatan, sehingga Anda dapat mengkonsolidasikan data dari sumber semi-terstruktur ke dalam file yang lebih besar yang dapat dibaca oleh mesin Iceberg secara efisien.

Kompatibilitas Versi

V3 mempertahankan kompatibilitas mundur dengan tabel V2. AWS layanan mendukung tabel V2 dan V3 secara bersamaan, memungkinkan Anda untuk:

  • Jalankan kueri di tabel V2 dan V3

  • Tingkatkan tabel V2 yang ada ke V3 tanpa penulisan ulang data

  • Jalankan kueri perjalanan waktu yang mencakup snapshot V2 dan V3

  • Gunakan evolusi skema dan partisi tersembunyi di seluruh versi tabel

penting

V3 adalah upgrade satu arah. Setelah tabel ditingkatkan dari V2 ke V3, tabel tidak dapat diturunkan kembali ke V2 melalui operasi standar.

Memulai dengan V3

Prasyarat

Sebelum bekerja dengan tabel V3, pastikan Anda memiliki:

  • AWS Akun dengan izin IAM yang sesuai

  • Akses ke satu atau lebih layanan AWS analitik (EMR, Glue, Amazon SageMaker Unified Studio Notebooks, atau S3 Tables)

  • Bucket S3 untuk menyimpan data tabel dan metadata

  • Bucket meja untuk memulai dengan Tabel S3 atau bucket S3 tujuan umum jika Anda membangun infrastruktur Iceberg Anda sendiri

  • AWS Katalog lem dikonfigurasi

Membuat Tabel V3

Membuat Tabel V3 Baru

Untuk membuat tabel Iceberg V3 baru, atur properti tabel format-version 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 V2 ke V3

Anda dapat memutakhirkan tabel V2 yang ada ke V3 secara atomik tanpa menulis ulang data.

Menggunakan Spark SQL:

ALTER TABLE myns.existing_table SET TBLPROPERTIES ('format-version' = '3')
penting

V3 adalah upgrade satu arah. Setelah tabel ditingkatkan dari V2 ke V3, tabel tidak dapat diturunkan kembali ke V2 melalui operasi standar.

Apa yang terjadi selama upgrade:

  • Snapshot metadata baru dibuat secara atom

  • File data Parquet yang ada digunakan kembali

  • Row-lineage bidang ditambahkan ke metadata tabel

  • Pemadatan berikutnya akan menghapus file penghapusan V2 lama

  • Modifikasi baru akan menggunakan file Vektor Penghapusan V3

  • Peningkatan tidak melakukan pengisian ulang historis catatan pelacakan perubahan garis keturunan baris

Mengaktifkan Vektor Penghapusan

Untuk memanfaatkan Vektor Penghapusan untuk memperbarui, menghapus, dan menggabungkan, 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.

Memanfaatkan Pel Row-lineage acakan Perubahan

V3 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

Bidang _row_id secara unik mengidentifikasi setiap baris, sementara _last_updated_sequence_number melacak kapan baris terakhir dimodifikasi. Gunakan bidang ini untuk:

  • Identifikasi baris yang diubah untuk pemrosesan tambahan

  • Lacak garis keturunan data untuk kepatuhan

  • Optimalkan saluran pipa CDC

  • Mengurangi biaya komputasi dengan hanya memproses perubahan

Menggunakan tipe data varian

penting

Jenis data varian hanya tersedia di Wil AWS ayah tertentu. Untuk daftar lengkap Wilayah yang didukung, lihatKetersediaan.

Dengan tipe data varian, Anda dapat menulis data semi-terstruktur seperti JSON langsung di tabel Iceberg Anda tanpa menentukan skema tetap terlebih dahulu. Anda dapat menulis data lebih cepat sambil tetap mendapatkan kinerja kueri analitis yang efisien. Mesin yang kompatibel dengan Iceberg V3 merobek data semi-terstruktur Anda menjadi kolom tersembunyi saat Anda menulisnya. Kolom tersembunyi ini menghasilkan statistik kolom parket yang digunakan mesin kueri untuk pengoptimalan seperti pemangkasan file.

Membuat tabel dengan kolom varian menggunakan Spark SQL:

CREATE TABLE IF NOT EXISTS myns.events ( event_id bigint, event_timestamp timestamp, source string, event_data VARIANT ) USING iceberg TBLPROPERTIES ( 'format-version' = '3' )

Memasukkan data semi-terstruktur ke kolom varian:

INSERT INTO myns.events VALUES ( 1, current_timestamp(), 'web-app', PARSE_JSON('{"user_id": "u-1234", "action": "page_view", "page": "/products", "duration_ms": 350}') ); INSERT INTO myns.events VALUES ( 2, current_timestamp(), 'mobile-app', PARSE_JSON('{"user_id": "u-5678", "action": "purchase", "items": [{"sku": "A100", "qty": 2}], "total": 49.99}') );

Dengan Tabel S3, pemeliharaan tabel untuk kolom varian, termasuk pemadatan, berjalan secara otomatis. Pemadatan mengkonsolidasikan data dari sumber semi-terstruktur dari file kecil menjadi file yang lebih besar yang dapat dibaca mesin Iceberg dengan lebih efisien, meningkatkan kinerja kueri dari waktu ke waktu.

Praktik Terbaik untuk V3

Kapan Menggunakan V3

Pertimbangkan untuk meningkatkan ke atau memulai dengan V3 ketika:

  • Anda sering melakukan pembaruan atau penghapusan batch

  • Anda harus memenuhi persyaratan penghapusan GDPR atau kepatuhan

  • Beban kerja Anda melibatkan peningkatan frekuensi tinggi

  • Anda membutuhkan 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 yang berat pembaruan:

    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

  • Manfaatkan garis keturunan baris untuk pemrosesan tambahan

  • Gunakan perjalanan waktu untuk mengakses data historis tanpa menyalin

  • Aktifkan pengumpulan statistik untuk perencanaan kueri yang lebih baik

Strategi Migrasi

Saat bermigrasi dari V2 ke V3:

  • Uji di non-produksi terlebih dahulu - Validasi proses dan kinerja peningkatan

  • Upgrade selama periode aktivitas rendah - Minimalkan dampak pada operasi bersamaan

  • Memantau kinerja awal - Lacak metrik setelah peningkatan

  • Jalankan pemadatan - Konsolidasikan file hapus setelah peningkatan

  • Perbarui dokumentasi - Refleksikan fitur V3 dalam dokumentasi tim

Pertimbangan Kompatibilitas

  • Versi mesin - Pastikan semua mesin mengakses tabel mendukung V3

  • Third-party alat - Verifikasi kompatibilitas V3 sebelum memutakhirkan

  • Strategi pencadangan - Uji prosedur pemulihan berbasis snapshot

  • Pemantauan - Memperbarui dasbor pemantauan untuk metrik V3-specific

Pertimbangan untuk pemadatan

Pemadatan menulis file parket varian parket yang diparut secara default. Pembaca lama yang tidak mendukung penghancuran mungkin gagal membaca file yang dipadatkan. Anda dapat menonaktifkan penghancuran dengan mengatur properti write.variant.shredding.enabled=false tabel.

Pemecahan masalah

Masalah Umum

Kesalahan: “format-versi 3 tidak didukung”
  • Periksa katalog mesin kueri Anda untuk kompatibilitas dengan Iceberg V3.

  • Pastikan Anda menggunakan versi AWS layanan terbaru.

  • Verifikasi versi mesin Anda mendukung V3

    Dukungan V3 untuk AWS layanan Amazon adalah sebagai berikut:

    Layanan Dukungan V3 Dukungan varian V3
    Percikan EMR Rilis 7.12+ Rilis 8.0+
    AWS Lem ETL Ya Tidak
    Notebook Studio Ter SageMaker padu Amazon Ya Tidak
    AWS Lem: Iceberg REST API, Perawatan Meja Ya Tidak
    Tabel Amazon S3: API REST Iceberg, Pemeliharaan Tabel Ya Ya*
    Amazon Athena (Trino) Tidak Tidak

    *Ketersediaan Wilayah Sebagian

Penurunan kinerja setelah peningkatan
  • Pastikan tidak ada kegagalan pemadatan. Lihat Penc atatan dan pemantauan untuk Tabel S3 untuk detail selengkapnya.

  • Periksa apakah Vektor Penghapusan diaktifkan. Pastikan properti berikut diatur:

    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. Partisi yang berlebihan dapat menyebabkan file kecil. Jalankan kueri di bawah ini 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
  • Alat verifikasi mendukung spesifikasi V3

  • Pertimbangkan untuk memelihara tabel V2 untuk alat yang tidak didukung

  • Hubungi vendor alat untuk timeline dukungan V3

Mendapatkan Bantuan

  • AWS Dukungan: Hubungi AWS Dukungan untuk masalah khusus layanan

  • Komunitas Apache Iceberg: Slack Gunung Es

  • AWS Dokumentasi: Dokumentasi AWS Analytics

Harga

Ketersediaan

Dukungan Apache Iceberg V3 untuk vektor penghapusan dan garis keturunan baris tersedia di semua Wil AWS ayah tempat Amazon EMR, Katalog Data AWS Glue, AWS Glue ETL, dan Tabel S3 beroperasi.

Jenis data varian dalam Tabel S3 tersedia di Wil AWS ayah berikut: AS Timur (Virginia Utara), AS Timur (Ohio), AS Barat (Oregon), Asia Pasifik (Mumbai), Asia Pasifik (Seoul), Asia Pasifik (Singapura), Asia Pasifik (Sydney), Asia Pasifik (Tokyo), Kanada (Tengah), Eropa (Frankfurt), Eropa (Irlandia), Eropa (London), Eropa (Paris), Eropa (Stockholm), dan Amerika Selatan (São Paulo).

Sumber Daya Tambahan