All Products
Search
Document Center

Data Lake Formation:Akses tabel Iceberg DLF dari EMR pada Spark ECS

Last Updated:Jul 16, 2026

Topik ini menjelaskan cara mengakses tabel Iceberg Data Lake Formation (DLF) dari EMR pada Spark ECS menggunakan Iceberg Spark Runtime open-source melalui Iceberg REST Catalog.

Prasyarat

  • Persyaratan versi: Kluster EMR versi 5.12.0 atau lebih baru dengan komponen Spark 3. Spark harus menggunakan JDK 17 (diperlukan oleh Iceberg 1.11.0); konfigurasikan sesuai petunjuk dalam Use JDK 11 in Spark 3.

  • Persyaratan wilayah: Kluster EMR dan DLF harus berada di wilayah yang sama, serta VPC kluster harus ditambahkan ke daftar izin DLF.

  • Persyaratan izin: Anda harus memiliki Pasangan Kunci Akses dengan izin untuk mengakses DLF, dan Pengguna RAM terkait harus diberikan izin data pada katalog target. Untuk informasi selengkapnya, lihat Manage data permissions.

Dependencies

Hanya dua artefak komunitas Apache Iceberg berikut dari Maven Central yang diperlukan:

  • iceberg-spark-runtime-3.5_2.12 (versi 1.11.0 atau lebih baru)

  • iceberg-aws-bundle (versi 1.11.0 atau lebih baru)

Anda dapat menggunakan flag --packages untuk menarik dependensi secara otomatis saat mengirimkan Pekerjaan (lihat contoh berikut). Untuk kluster offline, Anda juga dapat mengunduh file JAR dan meletakkannya di direktori $SPARK_HOME/jars.

Contoh penggunaan

Konfigurasi koneksi Catalog

Jalankan perintah spark-sql di terminal. Ganti placeholder dengan nilai aktual Anda.

spark-sql \
  --master local \
  --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.11.0,org.apache.iceberg:iceberg-aws-bundle:1.11.0 \
  --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \
  --conf spark.sql.catalog.iceberg_catalog=org.apache.iceberg.spark.SparkCatalog \
  --conf spark.sql.catalog.iceberg_catalog.catalog-impl=org.apache.iceberg.rest.RESTCatalog \
  --conf spark.sql.catalog.iceberg_catalog.uri=http://${regionID}-vpc.dlf.aliyuncs.com/iceberg \
  --conf spark.sql.catalog.iceberg_catalog.warehouse=${catalogName} \
  --conf spark.sql.catalog.iceberg_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIO \
  --conf spark.sql.catalog.iceberg_catalog.rest.auth.type=sigv4 \
  --conf spark.sql.catalog.iceberg_catalog.rest.auth.sigv4.delegate-auth-type=none \
  --conf spark.sql.catalog.iceberg_catalog.rest.signing-region=${regionID} \
  --conf spark.sql.catalog.iceberg_catalog.rest.signing-name=DlfNext \
  --conf spark.sql.catalog.iceberg_catalog.rest.access-key-id=${AccessKeyId} \
  --conf spark.sql.catalog.iceberg_catalog.rest.secret-access-key=${AccessKeySecret}

Tabel berikut menjelaskan item konfigurasi:

Item konfigurasi

Deskripsi

Contoh

uri

Titik akhir VPC layanan REST Iceberg DLF, dalam format http://<regionID>-vpc.dlf.aliyuncs.com/iceberg. Untuk informasi selengkapnya, lihat Service access point

http://cn-hangzhou-vpc.dlf.aliyuncs.com/iceberg

warehouse

Nama katalog

iceberg_test

catalog-impl

Nilai tetap: org.apache.iceberg.rest.RESTCatalog

org.apache.iceberg.rest.RESTCatalog

io-impl

Implementasi standar komunitas Iceberg. Nilai tetap: org.apache.iceberg.aws.s3.S3FileIO

org.apache.iceberg.aws.s3.S3FileIO

rest.auth.type

Jenis autentikasi. Nilai tetap: sigv4

sigv4

rest.auth.sigv4.delegate-auth-type

Nilai tetap: none

none

rest.signing-region

ID wilayah DLF

cn-hangzhou

rest.signing-name

Nilai tetap: DlfNext

DlfNext

rest.access-key-id

ID AccessKey yang digunakan untuk mengakses DLF

rest.secret-access-key

AccessKeySecret yang digunakan untuk mengakses DLF

Baca dan tulis tabel Iceberg DLF

Setelah startup, Anda dapat menggunakan Spark SQL standar untuk membaca dan menulis data:

CREATE DATABASE IF NOT EXISTS iceberg_catalog.db;
CREATE TABLE iceberg_catalog.db.iceberg_tbl (id BIGINT, name STRING) USING iceberg;
INSERT INTO iceberg_catalog.db.iceberg_tbl VALUES (1, 'hello'), (2, 'world');
SELECT * FROM iceberg_catalog.db.iceberg_tbl;