Anda dapat menggunakan Apache Paimon untuk menyebarkan layanan penyimpanan data lake di Hadoop Distributed File System (HDFS) atau Alibaba Cloud Object Storage Service (OSS) secara efisien, serta menggunakan mesin komputasi Spark untuk analitik data lake. Topik ini menjelaskan cara menggunakan Spark SQL untuk membaca dan menulis data ke Paimon di EMR.
Prasyarat
Kluster DataLake atau kustom telah dibuat, dan layanan Spark serta Paimon dipilih saat pembuatan kluster. Untuk informasi lebih lanjut, lihat Buat kluster.
Batasan
Hanya kluster EMR V3.46.0, EMR V5.12.0, atau versi minor setelahnya yang mendukung penggunaan Spark SQL untuk membaca dan menulis data ke Paimon.
Hanya Spark SQL dari Spark 3 yang mendukung penggunaan katalog untuk membaca dan menulis data ke Paimon.
Prosedur
Langkah 1: Konfigurasikan katalog
Spark dapat membaca dan menulis data ke tabel Paimon menggunakan katalog. Katalog Paimon dan spark_catalog didukung. Pilih katalog berdasarkan skenario bisnis Anda.
Katalog Paimon: Digunakan untuk mengelola metadata dalam format Paimon. Dapat digunakan hanya untuk membaca dan menulis data ke tabel Paimon.
spark_catalog: Katalog bawaan default Spark. Biasanya digunakan untuk mengelola metadata tabel internal Spark SQL. Dapat digunakan untuk membaca dan menulis data ke tabel Paimon maupun non-Paimon.
Gunakan katalog Paimon
Metadata dapat disimpan di sistem file seperti HDFS atau sistem penyimpanan objek seperti OSS. Metadata juga dapat disinkronkan ke DLF dan Hive untuk memudahkan akses oleh layanan lain.
Root path untuk penyimpanan ditentukan oleh parameter spark.sql.catalog.paimon.warehouse. Jika root path tidak ada, itu akan dibuat secara otomatis. Jika sudah ada, katalog dapat digunakan untuk mengakses tabel yang ada di path tersebut.
Masuk ke node master kluster dalam mode SSH. Untuk informasi lebih lanjut, lihat Masuk ke kluster.
Pilih jenis katalog berdasarkan tipe penyimpanan metadata, lalu jalankan perintah yang diberikan untuk memulai Spark SQL.
Konfigurasikan katalog sistem file
Katalog sistem file menyimpan metadata di sistem file atau sistem 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.PaimonSparkSessionExtensionsCatatanspark.sql.catalog.paimon: Mendefinisikan katalog bernama paimon.spark.sql.catalog.paimon.metastore: Menentukan tipe penyimpanan metadata. Jika diatur kefilesystem, metadata disimpan di sistem file lokal.spark.sql.catalog.paimon.warehouse: Menentukan lokasi gudang data. Konfigurasikan sesuai kebutuhan bisnis Anda. Ganti<yourBucketName>dengan nama Bucket OSS. Untuk informasi lebih lanjut tentang pembuatan Bucket OSS, lihat Buat bucket.
Konfigurasikan katalog DLF
Katalog DLF dapat menyinkronkan metadata ke DLF.
PentingSaat membuat kluster EMR, pilih DLF Unified Metadata untuk 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.PaimonSparkSessionExtensionsCatatanspark.sql.catalog.paimon: Mendefinisikan katalog bernama paimon.spark.sql.catalog.paimon.metastore: Menentukan tipe penyimpanan metadata. Jika diatur kedlf, metadata disinkronkan ke DLF.spark.sql.catalog.paimon.warehouse: Menentukan lokasi gudang data. Konfigurasikan sesuai kebutuhan bisnis Anda. Ganti<yourBucketName>dengan nama Bucket OSS. Untuk informasi lebih lanjut tentang pembuatan Bucket OSS, lihat Buat bucket.
Konfigurasikan katalog Hive
Katalog Hive dapat menyinkronkan metadata ke Hive Metastore. Hive memungkinkan Anda menanyakan data dalam tabel yang dibuat di katalog Hive. Untuk informasi tentang cara menanyakan data Paimon di Hive, lihat Integrasi Paimon dengan 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.PaimonSparkSessionExtensionsCatatanspark.sql.catalog.paimon: Mendefinisikan katalog bernama paimon.spark.sql.catalog.paimon.metastore: Menentukan tipe penyimpanan metadata. Jika diatur kehive, metadata disinkronkan ke Hive Metastore.spark.sql.catalog.paimon.uri: Menentukan alamat dan nomor port Hive Metastore. Jika diatur kethrift://master-1-1:9083, klien Spark SQL terhubung ke Hive Metastore yang berjalan pada nodemaster-1-1dan port mendengarkan 9083 untuk mendapatkan informasi metadata.spark.sql.catalog.paimon.warehouse: Menentukan lokasi gudang data. Konfigurasikan sesuai kebutuhan bisnis Anda. Ganti<yourBucketName>dengan nama Bucket OSS. Untuk informasi lebih lanjut tentang pembuatan Bucket OSS, lihat Buat bucket.
Gunakan spark_catalog
Masuk ke node master kluster dalam mode SSH. Untuk informasi lebih lanjut, lihat Masuk ke kluster.
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.PaimonSparkSessionExtensionsCatatanspark.sql.catalog.spark_catalog: Mendefinisikan katalog bernama spark_catalog.Root path untuk penyimpanan di spark_catalog ditentukan oleh parameter
spark.sql.warehouse.dirdan biasanya tidak perlu dimodifikasi.
Langkah 2: Baca data dari dan tulis data ke tabel Paimon
Eksekusi pernyataan Spark SQL berikut untuk membuat tabel Paimon di katalog yang dikonfigurasi, serta membaca dan menulis data ke tabel tersebut.
Gunakan katalog Paimon
Untuk mengakses tabel Paimon, tentukan nama tabel dalam format paimon.<db_name>.<tbl_name>, di mana <db_name> adalah nama database dan <tbl_name> adalah nama tabel.
-- Buat database.
CREATE DATABASE IF NOT EXISTS paimon.ss_paimon_db;
-- Buat tabel Paimon.
CREATE TABLE paimon.ss_paimon_db.paimon_tbl (id INT, name STRING) USING paimon;
-- Tulis data ke tabel Paimon.
INSERT INTO paimon.ss_paimon_db.paimon_tbl VALUES (1, "apple"), (2, "banana"), (3, "cherry");
-- Tanyakan data dari tabel Paimon.
SELECT * FROM paimon.ss_paimon_db.paimon_tbl ORDER BY id;
-- Hapus database.
DROP DATABASE paimon.ss_paimon_db CASCADE;Jika kesalahan metastore: Failed to connect to the MetaStore Server dilaporkan saat membuat database setelah mengonfigurasi katalog Hive, layanan Hive Metastore belum dimulai. Jalankan perintah berikut untuk memulai Hive Metastore, lalu konfigurasikan ulang katalog Hive.
hive --service metastore &Jika Anda menetapkan Metadata ke DLF Unified Metadata saat membuat kluster, kami sarankan menyinkronkan metadata ke DLF dan mengonfigurasi katalog DLF.
Gunakan spark_catalog
Anda dapat menentukan nama tabel dalam format spark_catalog.<db_name>.<tbl_name>, baik untuk mengakses tabel Paimon maupun non-Paimon. Katalog bawaan default Spark adalah spark_catalog, sehingga Anda dapat menghilangkan spark_catalog dan langsung menentukan nama tabel dalam format <db_name>.<tbl_name>. Di sini, <db_name> menunjukkan nama database, dan <tbl_name> menunjukkan nama tabel.
-- Buat database.
CREATE DATABASE IF NOT EXISTS ss_paimon_db;
CREATE DATABASE IF NOT EXISTS ss_parquet_db;
-- Buat tabel Paimon dan tabel Parquet.
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";
-- Tulis data ke tabel Paimon.
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;
-- Tanyakan data dari tabel Paimon.
SELECT * FROM ss_paimon_db.paimon_tbl ORDER BY id;
-- Hapus database.
DROP DATABASE ss_paimon_db CASCADE;
DROP DATABASE ss_parquet_db CASCADE;Hasil berikut dikembalikan:
1 apple
2 banana
3 cherry FAQ
Referensi
Untuk informasi lebih lanjut tentang Paimon, lihat Apache Paimon.
