Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan kerangka Iceberg di AWS Lem
AWS Glue 3.0 dan yang lebih baru mendukung kerangka Apache Iceberg untuk data lake. Iceberg menyediakan format tabel kinerja tinggi yang berfungsi seperti tabel SQL. Topik ini mencakup fitur yang tersedia untuk menggunakan data Anda di AWS Glue saat Anda mengangkut atau menyimpan data Anda dalam tabel Iceberg. Untuk mempelajari lebih lanjut tentang Iceberg, lihat dokumentasi Apache Iceberg resmi.
Anda dapat menggunakan AWS Glue untuk melakukan operasi baca dan tulis pada tabel Iceberg di Amazon S3, atau bekerja dengan tabel Iceberg menggunakan Katalog Data AWS Glue. Operasi tambahan termasuk menyisipkan dan semua Spark
catatan
ALTER TABLE … RENAME TOtidak tersedia untuk Apache Iceberg 0.13.1 untuk AWS Glue 3.0.
Tabel berikut mencantumkan versi Iceberg yang disertakan dalam setiap versi AWS Glue.
| AWS Versi lem | Versi Iceberg yang didukung |
|---|---|
| 5.1 | 1.10.0 |
| 5.0 | 1.7.1 |
| 4.0 | 1.0.0 |
| 3.0 | 0.13.1 |
Untuk mempelajari lebih lanjut tentang kerangka kerja danau data yang AWS didukung Glue, lihatMenggunakan kerangka kerja data lake dengan pekerjaan AWS Glue ETL.
Mengaktifkan kerangka Iceberg
Untuk mengaktifkan Iceberg for AWS Glue, selesaikan tugas berikut:
-
Tentukan
icebergsebagai nilai untuk parameter--datalake-formatspekerjaan. Untuk informasi selengkapnya, lihat Menggunakan parameter pekerjaan di AWS Lowongan kerja Glue. -
Buat kunci bernama
--confuntuk pekerjaan AWS Glue Anda, dan atur ke nilai berikut. Atau, Anda dapat mengatur konfigurasi berikut menggunakanSparkConfdalam skrip Anda. Pengaturan ini membantu Apache Spark menangani tabel Iceberg dengan benar.spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.catalog.glue_catalog=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.glue_catalog.warehouse=s3://<your-warehouse-dir>/ --conf spark.sql.catalog.glue_catalog.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog --conf spark.sql.catalog.glue_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIOJika Anda membaca atau menulis ke tabel Iceberg yang terdaftar di Lake Formation, ikuti panduan Penggunaan AWS Glue dengan AWS Lake Formation untuk kontrol akses berbutir halus di AWS Glue 5.0 dan yang lebih baru. Di AWS Glue 4.0, tambahkan konfigurasi berikut untuk mengaktifkan dukungan Formasi Danau.
--conf spark.sql.catalog.glue_catalog.glue.lakeformation-enabled=true --conf spark.sql.catalog.glue_catalog.glue.id=<table-catalog-id>Jika Anda menggunakan AWS Glue 3.0 dengan Iceberg 0.13.1, Anda harus mengatur konfigurasi tambahan berikut untuk menggunakan pengelola kunci Amazon DynamoDB untuk memastikan transaksi atom. AWS Glue 4.0 atau yang lebih baru menggunakan penguncian optimis secara default. Untuk informasi selengkapnya, lihat AWS Integrasi Gunung Iceberg
di dokumentasi Apache Iceberg resmi. --conf spark.sql.catalog.glue_catalog.lock-impl=org.apache.iceberg.aws.glue.DynamoLockManager --conf spark.sql.catalog.glue_catalog.lock.table=<your-dynamodb-table-name>
Menggunakan versi Iceberg yang berbeda
Untuk menggunakan versi Iceberg yang tidak didukung AWS Glue, tentukan file JAR Iceberg Anda sendiri menggunakan parameter --extra-jars pekerjaan. Jangan sertakan iceberg sebagai nilai untuk --datalake-formats parameter. Jika Anda menggunakan AWS Glue 5.0 atau lebih tinggi, Anda harus mengatur parameter --user-jars-first true pekerjaan.
Mengaktifkan enkripsi untuk tabel Iceberg
catatan
Tabel gunung es memiliki mekanisme sendiri untuk mengaktifkan enkripsi sisi server. Anda harus mengaktifkan konfigurasi ini selain konfigurasi keamanan AWS Glue.
Untuk mengaktifkan enkripsi sisi server pada tabel Iceberg, tinjau panduan dari dokumentasi Iceberg. https://iceberg.apache.org/docs/latest/aws/#s3-server-side-encryption
Tambahkan konfigurasi Spark untuk wilayah lintas gunung es
Untuk menambahkan konfigurasi percikan tambahan untuk akses tabel lintas wilayah Iceberg dengan Katalog Data AWS Glue dan AWS Lake Formation, ikuti langkah-langkah di bawah ini:
Buat titik Multi-region akses.
Tetapkan properti Spark berikut:
----- --conf spark.sql.catalog.my_catalog.s3.use-arn-region-enabled=true \ --conf spark.sql.catalog.{CATALOG}.s3.access-points.bucket1", "arn:aws:s3::<account-id>:accesspoint/<mrap-id>.mrap \ --conf spark.sql.catalog.{CATALOG}.s3.access-points.bucket2", "arn:aws:s3::<account-id>:accesspoint/<mrap-id>.mrap -----
Menentukan versi format tabel Iceberg
AWS Glue 6.0 mendukung format Iceberg tabel versi 2 dan 3. Secara default, AWS Glue membuat tabel Iceberg v2. Icebergv3 memperkenalkan kemampuan tambahan, seperti tipe data VARIANT, stempel waktu presisi nanodetik, dan tipe data geospasial.
Untuk membuat tabel v3, Anda dapat memilih ikut menggunakan salah satu metode berikut:
-
Per tabel — Mengatur properti tabel format-version saat Anda membuat tabel.
CREATE TABLE glue_catalog.your_database.your_tableUSING iceberg TBLPROPERTIES ('format-version'='3') AS SELECT ... -
Catalog-wide — Tetapkan versi format default pada katalog untuk Spark sesi Anda. Tabel baru kemudian dibuat sebagai v3 secara default, tanpa mengatur properti pada setiap tabel.
--conf spark.sql.catalog.glue_catalog.table-default.format-version=3
Untuk memutakhirkan tabel v2 yang ada ke v3, atur properti tabel dengan menggunakan ALTER TABLE. Ini adalah perubahan metadata di tempat dan tidak menulis ulang file data Anda.
ALTER TABLE glue_catalog.your_database.your_tableSET TBLPROPERTIES ('format-version'='3')
Memutakhirkan ke v3 adalah perubahan satu arah
Sebelum Anda mengadopsi Iceberg v3, pertimbangkan hal berikut:
-
Anda tidak dapat menurunkan versi tabel dari v3 kembali ke v2. Icebergmenolak pengaturan
'format-version'='2'pada tabel v3, jadi rencanakan untuk mengadopsi v3 sebagai perubahan satu arah. -
Jika Anda menggunakan layanan lain yang tidak mendukung Iceberg v3, simpan sebagai tabel Iceberg v2 daripada memutakhirkannya ke v3.
Contoh: Tulis tabel Iceberg ke Amazon S3 dan daftarkan ke AWS Katalog Data Lem
Skrip contoh ini menunjukkan cara menulis tabel Iceberg ke Amazon S3. Contoh menggunakan Iceberg AWS
Integrations
Atau, Anda dapat menulis tabel Iceberg ke Amazon S3 dan Katalog Data menggunakan metode Spark.
Prasyarat: Anda perlu menyediakan katalog untuk perpustakaan Iceberg untuk digunakan. Saat menggunakan Katalog Data AWS Lem, AWS Glue membuatnya mudah. Katalog Data AWS Glue telah dikonfigurasi sebelumnya untuk digunakan oleh pustaka Spark sebagaiglue_catalog. Tabel Katalog Data diidentifikasi oleh a databaseName dan atableName. Untuk informasi selengkapnya tentang AWS Katalog Data Lem, lihatPenemuan dan katalogisasi data di AWS Glue.
Jika Anda tidak menggunakan Katalog Data AWS Glue, Anda harus menyediakan katalog melalui API Spark. Untuk informasi selengkapnya, lihat Konfigurasi Spark
Contoh ini menulis tabel Iceberg ke Amazon S3 dan Katalog Data menggunakan Spark.
Contoh: Membaca tabel Iceberg dari Amazon S3 menggunakan AWS Katalog Data Lem
Contoh ini membaca tabel Iceberg yang Anda buat. Contoh: Tulis tabel Iceberg ke Amazon S3 dan daftarkan ke AWS Katalog Data Lem
Contoh: Menyisip DataFrame kan a ke dalam tabel Iceberg di Amazon S3 menggunakan AWS Katalog Data Lem
Contoh ini menyisipkan data ke dalam tabel Iceberg yang Anda buat. Contoh: Tulis tabel Iceberg ke Amazon S3 dan daftarkan ke AWS Katalog Data Lem
catatan
Contoh ini mengharuskan Anda untuk mengatur parameter --enable-glue-datacatalog pekerjaan untuk menggunakan Katalog Data AWS Glue sebagai metastore Apache Spark Hive. Untuk mempelajari selengkapnya, lihat Menggunakan parameter pekerjaan di AWS Lowongan kerja Glue.
Contoh: Membaca tabel Iceberg dari Amazon S3 menggunakan Spark
Prasyarat: Anda perlu menyediakan katalog untuk perpustakaan Iceberg untuk digunakan. Saat menggunakan Katalog Data AWS Lem, AWS Glue membuatnya mudah. Katalog Data AWS Glue telah dikonfigurasi sebelumnya untuk digunakan oleh pustaka Spark sebagaiglue_catalog. Tabel Katalog Data diidentifikasi oleh a databaseName dan atableName. Untuk informasi selengkapnya tentang AWS Katalog Data Lem, lihatPenemuan dan katalogisasi data di AWS Glue.
Jika Anda tidak menggunakan Katalog Data AWS Glue, Anda harus menyediakan katalog melalui API Spark. Untuk informasi selengkapnya, lihat Konfigurasi Spark
Contoh ini membaca tabel Iceberg di Amazon S3 dari Katalog Data menggunakan Spark.
Contoh: Baca dan tulis tabel Gunung Es dengan kontrol izin Formasi Danau
Contoh ini membaca dan menulis tabel Gunung Es dengan kontrol izin Formasi Danau.
catatan
Contoh ini hanya berfungsi di AWS Glue 4.0. Di AWS Glue 5.0 dan yang lebih baru, ikuti panduan diPenggunaan AWS Glue dengan AWS Lake Formation untuk kontrol akses berbutir halus.
Buat tabel Iceberg dan daftarkan di Formasi Danau:
Untuk mengaktifkan kontrol izin Formasi Danau, Anda harus terlebih dahulu mendaftarkan jalur tabel Amazon S3 di Formasi Danau. Untuk informasi selengkapnya, lihat Mendaftarkan lokasi Amazon S3. Anda dapat mendaftarkannya baik dari konsol Lake Formation atau dengan menggunakan AWS CLI:
aws lakeformation register-resource --resource-arn arn:aws:s3:::<s3-bucket>/<s3-folder> --use-service-linked-role --region <REGION>Setelah Anda mendaftarkan lokasi Amazon S3, setiap tabel AWS Glue yang menunjuk ke lokasi (atau lokasi turunannya) akan mengembalikan nilai
IsRegisteredWithLakeFormationparameter sebagai true dalamGetTablepanggilan.Buat tabel Iceberg yang menunjuk ke jalur terdaftar melalui Spark SQL:
catatan
Berikut ini adalah contoh Python.
dataFrame.createOrReplaceTempView("tmp_<your_table_name>") query = f""" CREATE TABLE glue_catalog.<your_database_name>.<your_table_name> USING iceberg AS SELECT * FROM tmp_<your_table_name> """ spark.sql(query)Anda juga dapat membuat tabel secara manual melalui AWS Glue
CreateTableAPI. Untuk informasi selengkapnya, lihat Membuat tabel Apache Iceberg.
Berikan izin Formasi Danau untuk pekerjaan peran IAM. Anda dapat memberikan izin dari konsol Lake Formation, atau menggunakan AWS CLI. Untuk informasi selengkapnya, lihat: https://docs.aws.amazon.com/lake-formation/latest/dg/granting-table-permissions.html
Baca tabel Gunung Es yang terdaftar di Lake Formation. Kodenya sama dengan membaca tabel Iceberg yang tidak terdaftar. Perhatikan bahwa peran IAM pekerjaan AWS Glue Anda harus memiliki izin SELECT agar pembacaan berhasil.
# Example: Read an Iceberg table from the AWS Glue Data Catalog from awsglue.context import GlueContext from pyspark.context import SparkContext sc = SparkContext() glueContext = GlueContext(sc) df = glueContext.create_data_frame.from_catalog( database="<your_database_name>", table_name="<your_table_name>", additional_options=additional_options )Tulis ke tabel Gunung Es yang terdaftar di Lake Formation. Kode ini sama dengan menulis ke tabel Iceberg yang tidak terdaftar. Perhatikan bahwa peran IAM pekerjaan AWS Glue Anda harus memiliki izin SUPER agar penulisan berhasil.
glueContext.write_data_frame.from_catalog( frame=dataFrame, database="<your_database_name>", table_name="<your_table_name>", additional_options=additional_options )