全部产品
Search
文档中心

E-MapReduce:Penggunaan dasar

更新时间:Jul 06, 2025

Topik ini menjelaskan cara menggunakan Iceberg dalam kluster E-MapReduce (EMR).

Informasi latar belakang

Dalam topik ini, metadata dikelola menggunakan Data Lake Formation (DLF). Untuk informasi lebih lanjut tentang konfigurasi metadata, lihat Konfigurasi Metadata DLF.

Prasyarat

Kluster Hadoop dari EMR V5.3.0 atau versi minor terbaru telah dibuat. Untuk informasi lebih lanjut, lihat Buat Kluster.

Batasan

Ekstensi Spark SQL dari Iceberg tidak didukung di Spark 2.4. Jika Anda menggunakan kluster EMR V3.38.X atau versi minor terbaru, Anda hanya dapat menggunakan API Spark DataFrame untuk melakukan operasi terkait Iceberg. Topik ini menjelaskan cara menggunakan Spark SQL untuk melakukan operasi terkait Iceberg dalam kluster EMR V5.3.0 atau versi minor terbaru.

Prosedur

  1. Masuk ke kluster Anda dalam mode SSH. Untuk informasi lebih lanjut, lihat Masuk ke Kluster.

  2. Jalankan perintah berikut untuk mengonfigurasi parameter terkait Iceberg.

    Sebelum menggunakan Spark SQL untuk melakukan operasi terkait Iceberg, Anda harus mengonfigurasi katalog. Perintah berikut menunjukkan cara mengonfigurasi katalog. Nama default katalog dan parameter yang harus dikonfigurasi bervariasi berdasarkan versi kluster Anda. Untuk informasi lebih lanjut, lihat Konfigurasi Metadata DLF. Dalam konfigurasi berikut, DLF digunakan untuk mengelola metadata.

    Catatan

    Konfigurasi katalog memiliki awalan spark.sql.catalog.<catalog_name>. <catalog_name> menunjukkan nama katalog.

    • EMR V5.6.0 atau versi minor terbaru

      spark-sql --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \
       --conf spark.sql.catalog.iceberg=org.apache.iceberg.spark.SparkCatalog \
       --conf spark.sql.catalog.iceberg.catalog-impl=org.apache.iceberg.aliyun.dlf.hive.DlfCatalog \
    • EMR V5.5.X

      spark-sql --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \
       --conf spark.sql.catalog.dlf=org.apache.iceberg.spark.SparkCatalog \
       --conf spark.sql.catalog.dlf.catalog-impl=org.apache.iceberg.aliyun.dlf.hive.DlfCatalog \
       --conf spark.sql.catalog.dlf.warehouse=<yourOSSWarehousePath> \
      Catatan

      Anda dapat membiarkan parameter spark.sql.catalog.dlf.warehouse kosong. Jika Anda tidak mengonfigurasi parameter ini, jalur warehouse default akan digunakan.

    • EMR V5.3.X hingga EMR V5.4.X

      Anda harus mengonfigurasi pasangan AccessKey. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi. Untuk informasi lebih lanjut, lihat Konfigurasikan Variabel Lingkungan di Linux, macOS, dan Windows.

      spark-sql --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \
       --conf spark.sql.catalog.dlf_catalog=org.apache.iceberg.spark.SparkCatalog \
       --conf spark.sql.catalog.dlf_catalog.catalog-impl=org.apache.iceberg.aliyun.dlf.DlfCatalog \
       --conf spark.sql.catalog.dlf_catalog.io-impl=org.apache.iceberg.hadoop.HadoopFileIO \
       --conf spark.sql.catalog.dlf_catalog.oss.endpoint=<yourOSSEndpoint> \
       --conf spark.sql.catalog.dlf_catalog.warehouse=<yourOSSWarehousePath> \
       --conf spark.sql.catalog.dlf_catalog.access.key.id=<ALIBABA_CLOUD_ACCESS_KEY_ID> \
       --conf spark.sql.catalog.dlf_catalog.access.key.secret=<ALIBABA_CLOUD_ACCESS_KEY_SECRET> \
       --conf spark.sql.catalog.dlf_catalog.dlf.catalog-id=<yourCatalogId> \
       --conf spark.sql.catalog.dlf_catalog.dlf.endpoint=<yourDLFEndpoint> \
       --conf spark.sql.catalog.dlf_catalog.dlf.region-id=<yourDLFRegionId>

    Jika keluaran berisi informasi berikut, CLI Spark SQL dimulai:

    spark-sql>
  3. Lakukan operasi dasar.

    Penting

    Dalam contoh berikut, <catalog_name> menentukan nama katalog Anda. Untuk kluster EMR V5.6.0 atau versi minor terbaru, nama katalog adalah iceberg. Untuk kluster versi lainnya, lihat informasi yang dijelaskan di Langkah 2. Konfigurasi katalog memiliki awalan spark.sql.catalog.<catalog_name>.

    • Buat Database

      CREATE DATABASE IF NOT EXISTS <catalog_name>.iceberg_db;
    • Buat Tabel

      CREATE TABLE IF NOT EXISTS <catalog_name>.iceberg_db.sample(
          id BIGINT COMMENT 'id unik', 
          data STRING
      ) 
      USING iceberg;

      Pernyataan yang digunakan untuk membuat tabel Iceberg dapat mencakup klausa COMMENT, PARTITIONED BY, LOCATION, dan TBLPROPERTIES. Kode berikut menunjukkan cara menggunakan klausa TBLPROPERTIES untuk mengonfigurasi properti tingkat tabel:

      CREATE TABLE IF NOT EXISTS <catalog_name>.iceberg_db.sample(
          id BIGINT COMMENT 'id unik', 
          data STRING
      ) 
      USING iceberg
      TBLPROPERTIES (
          'write.format.default'='parquet'
      );
    • Sisipkan Data

      INSERT INTO <catalog_name>.iceberg_db.sample VALUES (1, 'a'), (2, 'b'), (3, 'c');
    • Kueri Data

      SELECT * FROM <catalog_name>.iceberg_db.sample;
      SELECT count(1) AS count, data FROM <catalog_name>.iceberg_db.sample GROUP BY data;
    • Perbarui Data

      UPDATE <catalog_name>.iceberg_db.sample SET data = 'x' WHERE id = 3;
    • Hapus Data

      DELETE FROM <catalog_name>.iceberg_db.sample WHERE id = 3;