Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Bekerja dengan Apache Iceberg di AWS Glue
AWS Glue
AWS Glue pekerjaan merangkum skrip yang mendefinisikan logika transformasi dengan menggunakan runtime Apache Spark
Saat Anda membuat pekerjaan Iceberg di AWS Glue, tergantung pada versinya AWS Glue, Anda dapat menggunakan integrasi Iceberg asli atau versi Iceberg khusus untuk melampirkan dependensi Iceberg ke pekerjaan tersebut.
Menggunakan integrasi Iceberg asli
AWS Glue Versi 3.0, 4.0, dan 5.0 secara native mendukung format data lake transaksional seperti Apache Iceberg, Apache Hudi, dan Linux Foundation Delta Lake untuk Spark. AWS Glue Fitur integrasi ini menyederhanakan langkah-langkah konfigurasi yang diperlukan untuk mulai menggunakan kerangka kerja ini di. AWS Glue
Untuk mengaktifkan dukungan Iceberg untuk AWS Glue pekerjaan Anda, atur pekerjaan: Pilih tab Detail pekerjaan untuk AWS Glue pekerjaan Anda, gulir ke parameter Job di bawah Properti lanjutan, dan atur kunci ke --datalake-formats
dan nilainya. iceberg
Jika Anda menulis pekerjaan dengan menggunakan buku catatan, Anda dapat mengonfigurasi parameter di sel notebook pertama dengan menggunakan %%configure
sihir sebagai berikut:
%%configure { "--conf" : <job-specific Spark configuration discussed later>, "--datalake-formats" : "iceberg" }
iceberg
Konfigurasi untuk --datalake-formats
in AWS Glue
sesuai dengan versi Iceberg tertentu berdasarkan versi Anda AWS Glue :
AWS Glue versi | Versi Iceberg default |
---|---|
5.0 |
1.7.1 |
4.0 |
1.0.0 |
3.0 |
0.13.1 |
Menggunakan versi Iceberg kustom
Dalam beberapa situasi, Anda mungkin ingin mempertahankan kendali atas versi Iceberg untuk pekerjaan itu dan meningkatkannya dengan kecepatan Anda sendiri. Misalnya, memutakhirkan ke versi yang lebih baru dapat membuka akses ke fitur baru dan peningkatan kinerja. Untuk menggunakan versi Iceberg tertentu AWS Glue, Anda dapat menyediakan file JAR Anda sendiri.
Sebelum Anda menerapkan versi Iceberg kustom, verifikasi kompatibilitas dengan AWS Glue lingkungan Anda dengan memeriksa bagian AWS Glue versi dokumentasi. AWS Glue Misalnya, AWS Glue 5.0 membutuhkan kompatibilitas dengan Spark 3.5.4.
Sebagai contoh, untuk menjalankan AWS Glue pekerjaan yang menggunakan Iceberg versi 1.9.1, ikuti langkah-langkah berikut:
-
Dapatkan dan unggah file JAR yang diperlukan ke Amazon S3:
-
Unduh iceberg-spark-runtime-3.5_2.12-1.9.1.jar dan -1.9.1.jar
dari repositori Apache Maven. iceberg-aws-bundle -
Unggah file-file ini ke lokasi bucket S3 yang Anda tentukan (misalnya,
s3://your-bucket-name/jars/
).
-
-
Siapkan parameter pekerjaan untuk AWS Glue pekerjaan Anda sebagai berikut:
-
Tentukan jalur S3 lengkap ke kedua file JAR dalam
--extra-jars
parameter, pisahkan dengan koma (misalnya,).s3://your-bucket-name/jars/iceberg-spark-runtime-3.5_2.12-1.9.1.jar,s3://your-bucket-name/jars/iceberg-aws-bundle-1.9.1.jar
-
Jangan sertakan
iceberg
sebagai nilai untuk--datalake-formats
parameter. -
Jika Anda menggunakan AWS Glue 5.0, Anda harus mengatur
--user-jars-first
parameter ketrue
.
-
Konfigurasi percikan untuk Iceberg di AWS Glue
Bagian ini membahas konfigurasi Spark yang diperlukan untuk membuat pekerjaan AWS Glue ETL untuk kumpulan data Iceberg. Anda dapat mengatur konfigurasi ini dengan menggunakan tombol --conf
Spark dengan daftar dipisahkan koma dari semua kunci dan nilai konfigurasi Spark. Anda dapat menggunakan %%configure
sihir di buku catatan, atau bagian Parameter Job di AWS Glue Studio konsol.
%glue_version 5.0 %%configure { "--conf" : "spark.sql.extensions=org.apache.iceberg.spark.extensions...", "--datalake-formats" : "iceberg" }
Konfigurasikan sesi Spark dengan properti berikut:
-
<catalog_name>
adalah nama nama katalog sesi Iceberg Spark Anda. Ganti dengan nama pilihan Anda, dan ingat untuk mengubah referensi di semua konfigurasi yang terkait dengan katalog ini. Dalam kode Anda, Anda dapat merujuk ke tabel Iceberg Anda dengan menggunakan nama tabel yang sepenuhnya memenuhi syarat, termasuk nama katalog sesi Spark, sebagai berikut:<catalog_name>.<database_name>.<table_name>
Atau, Anda dapat mengubah katalog default ke katalog Iceberg yang Anda tentukan dengan menyetel
spark.sql.defaultCatalog
ke nama katalog Anda. Anda dapat menggunakan pendekatan kedua ini untuk merujuk ke tabel tanpa awalan katalog, yang dapat menyederhanakan kueri Anda. -
<catalog_name>.<warehouse>
menunjuk ke jalur Amazon S3 tempat Anda ingin menyimpan data dan metadata Anda. -
Untuk membuat katalog AWS Glue Data Catalog, atur
spark.sql.catalog.<catalog_name>.type
keglue
. Kunci ini diperlukan untuk menunjuk ke kelas implementasi untuk setiap implementasi katalog kustom. Untuk katalog yang didukung oleh Iceberg, lihat bagian Praktik terbaik umum nanti dalam panduan ini.
Misalnya, jika Anda memiliki katalog yang dipanggilglue_iceberg
, Anda dapat mengonfigurasi pekerjaan Anda dengan menggunakan beberapa --conf
kunci sebagai berikut:
%%configure { "--datalake-formats" : "iceberg", "--conf" : "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.catalog.glue_iceberg=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.glue_iceberg.warehouse=s3://<your-warehouse-dir>/ --conf spark.sql.catalog.glue_iceberg.type=glue" }
Atau, Anda dapat menggunakan kode untuk menambahkan konfigurasi di atas ke skrip Spark Anda sebagai berikut:
spark = SparkSession.builder\ .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions")\ .config("spark.sql.catalog.glue_iceberg", "org.apache.iceberg.spark.SparkCatalog")\ .config("spark.sql.catalog.glue_iceberg.warehouse","s3://<your-warehouse-dir>/")\ .config("spark.sql.catalog.glue_iceberg.type", "glue") \ .getOrCreate()
Praktik terbaik untuk AWS Glue pekerjaan
Bagian ini memberikan pedoman umum untuk menyetel pekerjaan Spark AWS Glue untuk mengoptimalkan membaca dan menulis data ke tabel Iceberg. Untuk praktik terbaik khusus Iceberg, lihat bagian Praktik terbaik nanti di panduan ini.
-
Gunakan versi terbaru AWS Glue dan tingkatkan bila memungkinkan — Versi baru AWS Glue memberikan peningkatan kinerja, mengurangi waktu startup, dan fitur baru. Mereka juga mendukung versi Spark yang lebih baru yang mungkin diperlukan untuk versi Iceberg terbaru. Untuk daftar versi yang tersedia dan AWS Glue versi Spark yang mereka dukung, lihat AWS Glue dokumentasi.
-
Optimalkan memori AWS Glue pekerjaan - Ikuti rekomendasi di posting AWS blog Optimalkan manajemen memori di AWS Glue
. -
Gunakan AWS Glue Auto Scaling — Saat Anda mengaktifkan Auto Scaling AWS Glue , secara otomatis menyesuaikan jumlah pekerja secara dinamis berdasarkan beban AWS Glue kerja Anda. Ini membantu mengurangi biaya AWS Glue pekerjaan Anda selama beban puncak, AWS Glue karena menurunkan jumlah pekerja ketika beban kerja kecil dan pekerja duduk diam. Untuk menggunakan AWS Glue Auto Scaling, Anda menentukan jumlah maksimum pekerja yang dapat diskalakan oleh AWS Glue pekerjaan Anda. Untuk informasi selengkapnya, lihat Menggunakan penskalaan otomatis untukAWS Glue AWS Glue dokumentasi.
-
Gunakan versi Iceberg yang diinginkan - integrasi AWS Glue asli untuk Iceberg adalah yang terbaik untuk memulai dengan Iceberg. Namun, untuk beban kerja produksi, kami menyarankan Anda menambahkan dependensi pustaka (seperti yang dibahas sebelumnya dalam panduan ini) untuk mendapatkan kontrol penuh atas versi Iceberg. Pendekatan ini membantu Anda mendapatkan keuntungan dari fitur Iceberg terbaru dan peningkatan kinerja dalam pekerjaan Anda AWS Glue .
-
Aktifkan UI Spark untuk pemantauan dan debugging — Anda juga dapat menggunakan UI Spark AWS Glue untuk memeriksa pekerjaan Iceberg Anda dengan memvisualisasikan berbagai tahapan pekerjaan Spark dalam grafik asiklik terarah (DAG) dan memantau pekerjaan secara detail. Spark UI menyediakan cara yang efektif untuk memecahkan masalah dan mengoptimalkan pekerjaan Iceberg. Misalnya, Anda dapat mengidentifikasi tahapan bottleneck yang memiliki pengocokan besar atau tumpahan disk untuk mengidentifikasi peluang penyetelan. Untuk informasi selengkapnya, lihat Memantau pekerjaan menggunakan UI web Apache Spark dalam dokumentasi. AWS Glue