Bekerja dengan Apache Iceberg di AWS Glue - AWS Panduan Preskriptif

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 Glueadalah layanan integrasi data tanpa server yang memudahkan untuk menemukan, menyiapkan, memindahkan, dan mengintegrasikan data dari berbagai sumber untuk analitik, pembelajaran mesin (ML), dan pengembangan aplikasi. Salah satu kemampuan inti AWS Glue adalah kemampuannya untuk melakukan operasi ekstrak, transformasi, dan beban (ETL) dengan cara yang sederhana dan hemat biaya. Ini membantu mengkategorikan data Anda, membersihkannya, memperkayanya, dan memindahkannya dengan andal antara berbagai penyimpanan data dan aliran data. 

AWS Glue pekerjaan merangkum skrip yang mendefinisikan logika transformasi dengan menggunakan runtime Apache Spark atau Python. AWS Glue pekerjaan dapat dijalankan dalam mode batch dan streaming. 

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 dan 4.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 --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" }

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 dengan AWS Glue, Anda dapat menggunakan konektor khusus atau file JAR Anda sendiri.

Menggunakan konektor khusus

AWS Glue mendukung konektor, yang merupakan paket kode opsional yang membantu mengakses penyimpanan data di AWS Glue Studio. Anda dapat berlangganan konektor di AWS Marketplace, atau Anda dapat membuat konektor khusus.

catatan

AWS Marketplace menawarkan konektor Apache Iceberg untuk. AWS Glue Namun, kami menyarankan Anda menggunakan konektor khusus sebagai gantinya untuk mempertahankan kontrol atas versi Iceberg.

Misalnya, untuk membuat konektor pelanggan untuk Iceberg versi 0.13.1, ikuti langkah-langkah berikut:

  1. Unggah file iceberg-spark-runtime-3.1_2.12-0.13.1.jarbundle-2.17.161.jar,, dan url-connection-client-2.17.161.jar ke bucket Amazon S3. Anda dapat mengunduh file-file ini dari repositori Apache Maven masing-masing.

  2. Di AWS Glue Studio konsol, buat konektor Spark khusus:

    1. Di panel navigasi, pilih Koneksi data. (Jika Anda menggunakan navigasi yang lebih lama, pilih Konektor, Buat konektor khusus.)

    2. Di kotak Konektor, pilih Buat konektor khusus.

    3. Pada halaman Buat konektor kustom:

      • Tentukan jalur ke file JAR di Amazon S3.

      • Masukkan nama untuk konektor.

      • Pilih Spark sebagai jenis konektor.

      • Untuk nama Kelas, tentukan nama kelas sumber data yang memenuhi syarat (atau aliasnya) yang Anda gunakan saat memuat sumber data Spark dengan operator. format

      • (Opsional) Berikan deskripsi konektor.

3. Pilih Buat konektor.

Saat Anda bekerja dengan konektor AWS Glue, Anda harus membuat koneksi untuk konektor. Koneksi berisi properti yang diperlukan untuk terhubung ke penyimpanan data tertentu. Anda menggunakan koneksi tersebut dengan sumber data Anda dan target data dalam tugas ETL. Konektor dan koneksi bekerja sama untuk memfasilitasi akses ke penyimpanan data.

Untuk membuat koneksi dengan menggunakan konektor Iceberg kustom yang Anda buat:

  1. Di AWS Glue Studio konsol, pilih konektor Iceberg kustom Anda.

  2. Ikuti petunjuk untuk memberikan detail, seperti VPC Anda dan konfigurasi jaringan lain yang diperlukan oleh pekerjaan, lalu pilih Buat koneksi.

Anda sekarang dapat menggunakan koneksi dalam pekerjaan AWS Glue ETL Anda. Bergantung pada bagaimana Anda membuat pekerjaan, ada berbagai cara untuk melampirkan koneksi ke pekerjaan Anda:

  • Jika Anda membuat pekerjaan visual dengan menggunakan AWS Glue Studio, Anda dapat memilih koneksi dari daftar Koneksi pada properti sumber data — Konektor tab.

  • Jika Anda mengembangkan pekerjaan di buku catatan, gunakan %connections sihir untuk mengatur nama koneksi:

    %glue_version 3.0 %connections <name-of-the iceberg-connection> %%configure { "--conf" : "job-specific Spark configurations, to be discussed later", "--datalake-formats" : "iceberg" }
  • Jika Anda menulis pekerjaan dengan menggunakan editor skrip, tentukan koneksi pada tab Rincian pekerjaan, di bawah Properti lanjutan, Koneksi jaringan tambahan

Untuk informasi selengkapnya tentang prosedur di bagian ini, lihat Menggunakan konektor dan koneksi dengan AWS Glue Studio dalam AWS Glue dokumentasi.

Membawa file JAR Anda sendiri

Di AWS Glue, Anda juga dapat bekerja dengan Iceberg tanpa harus menggunakan konektor. Pendekatan ini berguna ketika Anda ingin mempertahankan kendali atas versi Iceberg dan memperbaruinya dengan cepat. Untuk menggunakan opsi ini, unggah file Iceberg JAR yang diperlukan ke dalam ember S3 pilihan Anda dan rujuk file dalam pekerjaan Anda. AWS Glue Misalnya, jika Anda bekerja dengan Iceberg 1.0.0, file JAR yang diperlukan adalahiceberg-spark-runtime-3.0_2.12-1.0.0.jar,, dan. url-connection-client-2.15.40.jar bundle-2.15.40.jar Anda juga dapat memprioritaskan file JAR tambahan di jalur kelas dengan mengatur --user-jars-first parameter true untuk pekerjaan.

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 3.0 %connections <name-of-the iceberg-connection> %%configure { "--conf" : "spark.sql.extensions=org.apache.iceberg.spark.extensions...", "--datalake-formats" : "iceberg" }

Konfigurasikan sesi Spark dengan properti berikut:

  • <catalog_name>adalah nama katalog sesi Iceberg Spark Anda. Ganti dengan nama katalog Anda, dan ingat untuk mengubah referensi di semua konfigurasi yang terkait dengan katalog ini. Dalam kode Anda, Anda kemudian harus merujuk ke tabel Iceberg Anda dengan nama tabel yang sepenuhnya memenuhi syarat, termasuk nama katalog sesi Spark, sebagai berikut:. <catalog_name>.<database_name>.<table_name>

  • <catalog_name>.<warehouse>menunjuk ke jalur Amazon S3 tempat Anda ingin menyimpan data dan metadata Anda.

  • Untuk membuat katalog AWS Glue Data Catalog, atur <catalog_name>.catalog-impl keorg.apache.iceberg.aws.glue.GlueCatalog. Kunci ini diperlukan untuk menunjuk ke kelas implementasi untuk setiap implementasi katalog kustom. Untuk katalog yang didukung oleh Iceberg, lihat Praktik terbaik umum bagian Praktik terbaik umum nanti dalam panduan ini.

  • Gunakan org.apache.iceberg.aws.s3.S3FileIO sebagai untuk memanfaatkan unggahan multipart Amazon S3 untuk paralelisme tinggi. <catalog_name>.io-impl

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.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog ", "‐‐conf" : " spark.sql.catalog.glue_iceberg.io-impl=org.apache.iceberg.aws.s3.S3FileIO }

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.catalog-impl", "org.apache.iceberg.aws.glue.GlueCatalog") \ .config("spark.sql.catalog.glue_iceberg.io-impl", "org.apache.iceberg.aws.s3.S3FileIO") \ .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 AWS Glue versi terbaru 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 konektor khusus atau tambahkan dependensi perpustakaan - integrasi AWS Glue asli untuk Iceberg adalah yang terbaik untuk memulai dengan Iceberg. Namun, untuk beban kerja produksi, kami menyarankan Anda menggunakan wadah khusus atau 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 di dokumentasi. AWS Glue