All Products
Search
Document Center

E-MapReduce:Integrasikan Paimon dengan Spark

Last Updated:Jun 21, 2026

Anda dapat menggunakan Paimon untuk membangun data lake di HDFS atau OSS dan menganalisis datanya menggunakan mesin komputasi Spark. Topik ini menjelaskan cara menggunakan Spark SQL di EMR untuk membaca dari dan menulis ke tabel Paimon.

Prasyarat

Anda telah membuat kluster DataLake atau Custom EMR dengan Spark dan Paimon yang telah terinstal. Untuk informasi lebih lanjut, lihat Create a cluster.

Batasan

  • Anda dapat menggunakan Spark SQL untuk membaca dari dan menulis ke Paimon pada kluster EMR yang menjalankan EMR-3.46.0 atau versi lebih baru, atau EMR-5.12.0 atau versi lebih baru.

  • Hanya Spark SQL di Spark 3 yang dapat membaca dari dan menulis ke Paimon melalui katalog.

Prosedur

Langkah 1: Konfigurasikan katalog

Spark membaca dari dan menulis ke tabel Paimon melalui katalog. Terdapat dua jenis katalog yang tersedia: katalog Paimon dan spark_catalog. Anda dapat memilih salah satu berdasarkan kasus penggunaan Anda.

  • Katalog Paimon: Mengelola metadata dalam format Paimon. Anda hanya dapat menggunakannya untuk melakukan kueri dan menulis ke tabel Paimon.

  • spark_catalog: Katalog bawaan default di Spark. Biasanya mengelola metadata tabel internal di Spark SQL dan memungkinkan Anda melakukan kueri serta menulis ke tabel Paimon maupun non-Paimon.

Paimon catalog

Anda dapat menyimpan metadata di sistem file seperti HDFS atau layanan penyimpanan objek seperti OSS. Anda juga dapat menyinkronkan metadata ke DLF dan Hive agar Paimon dapat diakses oleh layanan lain.

Parameter spark.sql.catalog.paimon.warehouse menentukan path root gudang data. Jika path root belum ada, sistem akan membuatnya secara otomatis. Jika path root sudah ada, Anda dapat menggunakan katalog ini untuk mengakses tabel yang sudah ada di path tersebut.

  1. Login ke node master kluster Anda melalui SSH. Untuk informasi lebih lanjut, lihat Log on to a cluster.

  2. Pilih katalog yang akan dikonfigurasi berdasarkan jenis metadata. Jalankan perintah yang sesuai untuk memulai Spark SQL.

    Filesystem catalog

    Katalog filesystem menyimpan metadata di sistem file atau penyimpanan objek.

    spark-sql --conf spark.sql.catalog.paimon=org.apache.paimon.spark.SparkCatalog \
    --conf spark.sql.catalog.paimon.metastore=filesystem \
    --conf spark.sql.catalog.paimon.warehouse=oss://<yourBucketName>/warehouse \
    --conf spark.sql.extensions=org.apache.paimon.spark.extensions.PaimonSparkSessionExtensions
    Catatan
    • spark.sql.catalog.paimon: Mendefinisikan katalog bernama paimon.

    • spark.sql.catalog.paimon.metastore: Menentukan jenis metastore untuk katalog tersebut. Mengatur nilainya ke filesystem berarti metadata disimpan di sistem file.

    • spark.sql.catalog.paimon.warehouse: Mengonfigurasi lokasi gudang data. Ganti <yourBucketName> dengan nama bucket OSS Anda. Untuk informasi lebih lanjut tentang cara membuat bucket, lihat Create a bucket.

    DLF catalog

    Katalog DLF menyinkronkan metadata ke DLF.

    Penting

    Saat membuat kluster, Metadata harus diatur ke DLF Unified Metadata.

    spark-sql --conf spark.sql.catalog.paimon=org.apache.paimon.spark.SparkCatalog \
    --conf spark.sql.catalog.paimon.metastore=dlf \
    --conf spark.sql.catalog.paimon.warehouse=oss://<yourBucketName>/warehouse \
    --conf spark.sql.extensions=org.apache.paimon.spark.extensions.PaimonSparkSessionExtensions
    Catatan
    • spark.sql.catalog.paimon: Mendefinisikan katalog bernama paimon.

    • spark.sql.catalog.paimon.metastore: Menentukan jenis metastore untuk katalog tersebut. Mengatur nilainya ke dlf berarti metadata disinkronkan ke Data Lake Formation (DLF).

    • spark.sql.catalog.paimon.warehouse: Mengonfigurasi lokasi gudang data. Ganti <yourBucketName> dengan nama bucket OSS Anda. Untuk informasi lebih lanjut tentang cara membuat bucket, lihat Create a bucket.

    Hive catalog

    Katalog Hive menyinkronkan metadata ke Hive Metastore. Tabel yang dibuat di katalog Hive dapat langsung dikueri di Hive. Untuk informasi lebih lanjut tentang cara melakukan kueri Paimon dari Hive, lihat Integrate Paimon with Hive.

    spark-sql --conf spark.sql.catalog.paimon=org.apache.paimon.spark.SparkCatalog \
    --conf spark.sql.catalog.paimon.metastore=hive \
    --conf spark.sql.catalog.paimon.uri=thrift://master-1-1:9083 \
    --conf spark.sql.catalog.paimon.warehouse=oss://<yourBucketName>/warehouse \
    --conf spark.sql.extensions=org.apache.paimon.spark.extensions.PaimonSparkSessionExtensions
    Catatan
    • spark.sql.catalog.paimon: Mendefinisikan katalog bernama paimon.

    • spark.sql.catalog.paimon.metastore: Menentukan jenis metastore untuk katalog tersebut. Mengatur nilainya ke hive berarti metadata disinkronkan ke Hive Metastore.

    • spark.sql.catalog.paimon.uri: Alamat dan port layanan Hive Metastore. Nilai thrift://master-1-1:9083 berarti Spark SQL terhubung ke layanan Hive Metastore yang berjalan di host master-1-1 dan mendengarkan pada Port 9083 untuk mendapatkan metadata.

    • spark.sql.catalog.paimon.warehouse: Mengonfigurasi lokasi gudang data. Ganti <yourBucketName> dengan nama bucket OSS Anda. Untuk informasi lebih lanjut tentang cara membuat bucket, lihat Create a bucket.

spark_catalog

  1. Login ke node master kluster Anda melalui SSH. Untuk informasi lebih lanjut, lihat Log on to a cluster.

  2. Jalankan perintah berikut untuk mengonfigurasi katalog dan memulai Spark SQL.

    spark-sql --conf spark.sql.catalog.spark_catalog=org.apache.paimon.spark.SparkGenericCatalog \
    --conf spark.sql.extensions=org.apache.paimon.spark.extensions.PaimonSparkSessionExtensions
    Catatan
    • spark.sql.catalog.spark_catalog: Mendefinisikan katalog bernama spark_catalog.

    • Path root gudang data untuk spark_catalog ditentukan oleh parameter spark.sql.warehouse.dir. Dalam kebanyakan kasus, Anda tidak perlu mengubah parameter ini.

Langkah 2: Baca dan tulis tabel Paimon

Jalankan pernyataan Spark SQL berikut untuk membuat tabel di katalog, lalu baca dan tulis data ke tabel tersebut.

Paimon catalog

Untuk mengakses tabel Paimon, gunakan format paimon.<db_name>.<tbl_name>, di mana <db_name> adalah nama database dan <tbl_name> adalah nama tabel.

-- Create a database.
CREATE DATABASE IF NOT EXISTS paimon.ss_paimon_db;

-- Create a Paimon table.
CREATE TABLE paimon.ss_paimon_db.paimon_tbl (id INT, name STRING) USING paimon;

-- Write data to the Paimon table.
INSERT INTO paimon.ss_paimon_db.paimon_tbl VALUES (1, "apple"), (2, "banana"), (3, "cherry");

-- Query the write result.
SELECT * FROM paimon.ss_paimon_db.paimon_tbl ORDER BY id;

-- Drop the database.
DROP DATABASE paimon.ss_paimon_db CASCADE;
Catatan

Jika Anda menerima error metastore: Failed to connect to the Metastore Server saat membuat database setelah mengonfigurasi katalog Hive, artinya layanan Hive Metastore tidak sedang berjalan. Anda harus menjalankan perintah berikut untuk memulai layanan tersebut. Setelah layanan berjalan, jalankan kembali perintah untuk mengonfigurasi katalog Hive.

hive --service metastore &

Jika Anda memilih DLF Unified Metadata saat membuat kluster, kami menyarankan Anda mengonfigurasi katalog DLF untuk menyinkronkan metadata ke DLF.

spark_catalog

Anda dapat menggunakan spark_catalog.<db_name>.<tbl_name> untuk mengakses tabel Paimon maupun non-Paimon. Karena spark_catalog merupakan katalog bawaan default di Spark, Anda dapat menghilangkan nama katalog dan langsung mengakses tabel menggunakan <db_name>.<tbl_name>. Dalam format ini, <db_name> adalah nama database dan <tbl_name> adalah nama tabel.

-- Create databases.
CREATE DATABASE IF NOT EXISTS ss_paimon_db;
CREATE DATABASE IF NOT EXISTS ss_parquet_db;

-- Create a Paimon table and a Parquet table.
CREATE TABLE ss_paimon_db.paimon_tbl (id INT, name STRING) USING paimon;
CREATE TABLE ss_parquet_db.parquet_tbl USING parquet AS SELECT 3, "cherry";

-- Write data to the Paimon table.
INSERT INTO ss_paimon_db.paimon_tbl VALUES (1, "apple"), (2, "banana");
INSERT INTO ss_paimon_db.paimon_tbl SELECT * FROM ss_parquet_db.parquet_tbl;

-- Query the write result.
SELECT * FROM ss_paimon_db.paimon_tbl ORDER BY id;

-- Drop the databases.
DROP DATABASE ss_paimon_db CASCADE;
DROP DATABASE ss_parquet_db CASCADE;

Kueri mengembalikan hasil berikut:

1       apple   
2       banana
3       cherry 

FAQ

Apakah parameter spark.sql.extensions=org.apache.paimon.spark.extensions.PaimonSparkSessionExtensions dikonfigurasi secara otomatis saat Anda menambahkan layanan Paimon ke kluster?

Ya. Setelah Anda menambahkan layanan Paimon ke kluster, ikuti langkah-langkah berikut untuk melihat konfigurasinya:

  1. Buka tab Services kluster target.

  2. Lihat konfigurasi layanan Spark.

    1. Di sebelah kanan layanan Spark, klik Configure.

    2. Di kotak pencarian By Name, cari spark.sql.extensions untuk melihat konfigurasinya.

      image

Apakah saya dapat membaca data dari dan menulis data ke Paimon menggunakan Spark Shell?

Ya. Untuk membaca data dari dan menulis data ke Paimon menggunakan Spark Shell, ikuti langkah-langkah berikut:

  1. Jalankan perintah berikut untuk memulai Spark Shell.

    spark-shell
  2. Di Spark Shell, jalankan kode Scala berikut untuk menulis ke dan melakukan kueri terhadap tabel Paimon yang disimpan di direktori tertentu.

    val dataset = spark.read.format("paimon").load("oss://<yourBucketName>/warehouse/test_db.db/test_tbl")
    dataset.createOrReplaceTempView("test_tbl")
    spark.sql("INSERT INTO test_tbl VALUES (4, 'apple1', 3.5), (5, 'banana1', 4.0), (6, 'cherry1', 20.5)")
    spark.sql("SELECT * FROM test_tbl").show()
    Catatan
    • paimon: Nilai tetap yang menentukan Paimon sebagai format data.

    • oss://<yourBucketName>/warehouse/test_db.db/test_tbl: Path ke tabel Paimon. <yourBucketName> adalah nama bucket OSS Anda.

Dokumentasi terkait

Untuk informasi lebih lanjut tentang penggunaan dan konfigurasi Paimon, lihat dokumentasi Apache Paimon.