All Products
Search
Document Center

Data Lake Formation:Mengakses Data DLF Menggunakan File pada EMR di ECS

Last Updated:Feb 14, 2026

Topik ini menjelaskan cara mengakses sistem file virtual Paimon (PVFS) di lingkungan EMR yang berjalan di ECS.

Prasyarat

  • Kluster EMR versi 5.12.0 atau lebih baru telah dibuat dengan komponen Spark3 dan Paimon yang dipilih. Jika Anda memerlukan versi berbeda, bergabunglah dengan grup DingTalk (ID: 106575000021) untuk menghubungi pengembang DLF.

  • DLF Catalog telah dibuat.

  • Kluster EMR dan layanan DLF berada di wilayah yang sama, serta VPC kluster EMR telah ditambahkan ke daftar putih DLF.

Berikan Izin DLF kepada Role

  1. Berikan izin RAM kepada role AliyunECSInstanceForEMRRole. Langkah ini dapat dilewati setelah integrasi produk EMR selesai.

    1. Masuk ke Konsol Resource Access Management (RAM) sebagai Akun Alibaba Cloud atau administrator RAM.

    2. Klik Identity Management > Roles, lalu temukan role AliyunECSInstanceForEMRRole.

    3. Pada kolom Actions, klik Add Authorization. Halaman Add Authorization akan terbuka.

    4. Pada bagian Access Policy, cari dan pilih AliyunDLFFullAccess, lalu klik Confirm Authorization.

    image

  2. Berikan izin role AliyunECSInstanceForEMRRole pada DLF Catalog.

    1. Masuk ke Konsol Data Lake Formation.

    2. Pada halaman daftar Catalog, klik nama katalog untuk membuka halaman detail katalog.

    3. Klik tab Permissions, lalu klik Authorize.

    4. Pada halaman Authorize, konfigurasikan parameter berikut dan klik OK.

      • Principal: Pilih RAM-User/RAM-Role.

      • Select Principal: Pilih AliyunECSInstanceForEMRRole dari daftar drop-down.

        Catatan

        Jika AliyunECSInstanceForEMRRole tidak muncul dalam daftar drop-down, buka halaman manajemen pengguna dan klik Synchronize.

      • Preset Permission Type: Pilih Data Editor.

Peningkatan Dependensi Paimon Kluster

  • Upgrade paket dependensi berikut ke versi 1.3 atau lebih baru:

  • Pilih paket dependensi paimon-spark yang sesuai dengan versi Spark Anda dan upgrade ke versi 1.3 atau lebih baru:

    Di Repositori Maven, pilih paket dependensi yang sesuai. Misalnya, jika Anda menggunakan Spark 3.2, pilih paimon-spark-3.2-1.3.0 atau versi yang lebih baru.

  1. Impor paket dependensi.

    Unggah keempat paket dependensi ke OSS dan atur izin file menjadi public-read. Untuk informasi selengkapnya, lihat Simple Upload.

  2. Buat skrip dan unggah ke OSS.

    #!/bin/bash
    
    echo 'prepare paimon-vfs in hadoop classpath'
    cd /opt/apps/JINDOSDK/jindosdk-current/lib
    rm -rf paimon-*
    wget ${paimon_vfs_jar}
    wget ${paimon_jindo_jar}
    wget ${paimon_bundle_jar}
    
    echo 'prepare paimon-spark in spark classpath'
    rm -rf /opt/apps/PAIMON/paimon-dlf
    rm -rf /opt/apps/PAIMON/paimon-dlf.tar.gz.*
    mkdir -p /opt/apps/PAIMON/paimon-dlf/lib/spark3
    cd /opt/apps/PAIMON/paimon-dlf/lib/spark3
    wget ${paimon_spark_jar}
    rm -f /opt/apps/PAIMON/paimon-current
    ln -sf /opt/apps/PAIMON/paimon-dlf /opt/apps/PAIMON/paimon-current
    Penting

    Ganti placeholder ${paimon_vfs_jar}, ${paimon_jindo_jar}, ${paimon_bundle_jar}, dan ${paimon_spark_jar} dalam skrip dengan path unduhan objek OSS yang sesuai. Secara default, kluster EMR di ECS tidak dapat mengakses Internet. Contoh:

    • Titik akhir internal: https://{bucket}.oss-cn-hangzhou-internal.aliyuncs.com/jars/paimon-jindo-1.3.0.jar.

    • Titik akhir publik: https://{bucket}.oss-cn-hangzhou.aliyuncs.com/jars/paimon-jindo-1.3.0.jar.

  3. Jalankan skrip sebagai tindakan bootstrap kluster EMR. Untuk informasi selengkapnya, lihat Manually run a script.

    1. Di Konsol EMR, buka halaman kluster Anda dan pilih Script Operations > Manual Execution, lalu klik Create and Execute.

    2. Pada kotak dialog yang muncul, konfigurasikan parameter berikut dan klik OK.

      • Name: Masukkan nama kustom untuk skrip.

      • Script Location: Pilih skrip peningkatan yang telah Anda unggah ke OSS. Path skrip harus dalam format oss://**/*.sh.

      • Execution Scope: Pilih Cluster.

  4. Setelah skrip dijalankan, restart layanan Spark dan Hive agar perubahan diterapkan.

Perbarui Konfigurasi Kluster EMR

  1. Di Konsol EMR, buka halaman kluster Anda dan pilih Cluster Services > Hadoop-Common > Configuration.

  2. Pada tab core-site.xml, klik Add Configuration Item.

    Key

    Value

    fs.AbstractFileSystem.pvfs.impl

    org.apache.paimon.vfs.hadoop.Pvfs

    fs.pvfs.impl

    org.apache.paimon.vfs.hadoop.PaimonVirtualFileSystem

    fs.pvfs.uri

    cn-hangzhou-vpc.dlf.aliyuncs.com

    Catatan

    Ganti dengan wilayah aktual. Untuk informasi selengkapnya, lihat Endpoints.

    fs.pvfs.token.provider

    dlf

    fs.pvfs.dlf.token-loader

    ecs

Akses File di DLF

Buat Object Table. Anda kemudian dapat mengakses data dalam object table menggunakan PVFS.

Akses Menggunakan Hadoop Shell

Unggah file CSV ke object table menggunakan shell Hadoop.

# Unggah file CSV
echo "James,Sales,3000" >> employee.csv
hadoop fs -put employee.csv pvfs://catalog_name/default/object_table/

# Tampilkan semua file di object_table
hadoop fs -ls pvfs://catalog_name/default/object_table/

# Lihat isi file CSV
hadoop fs -cat pvfs://catalog_name/default/object_table/employee.csv

Akses Menggunakan Hive

Kueri file CSV di object table menggunakan Hive.

# Terhubung ke Hive
beeline -u jdbc:hive2://localhost:10000

# Buat tabel sementara untuk memetakan file CSV
CREATE TEMPORARY TABLE temp_table (
    employee_name STRING,
    department STRING,
    salary INT
) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
STORED AS TEXTFILE 
LOCATION 'pvfs://catalog_name/default/object_table/';

# Kueri tabel sementara
SELECT * FROM temp_table;

Akses Menggunakan Spark

Kueri file CSV di object table menggunakan Spark.

# Jalankan spark-sql
spark-sql

# Buat tampilan sementara untuk memetakan file CSV
CREATE TEMPORARY VIEW temp_table
USING csv
OPTIONS (
path 'pvfs://catalog_name/default/object_table',
inferSchema 'false',
schema 'employee_name STRING, department STRING, salary INT'
);

# Kueri tampilan sementara
SELECT * FROM temp_table;