Artikel ini menjelaskan cara membangun pipeline analitik data lake Paimon menggunakan Realtime Compute for Apache Flink dan EMR Serverless Spark. Prosesnya mencakup penulisan data ke Object Storage Service (OSS), menjalankan kueri interaktif, dan melakukan kompaksi data offline. EMR Serverless Spark sepenuhnya kompatibel dengan Paimon dan berinteroperasi dengan produk cloud lainnya, seperti Realtime Compute for Apache Flink, melalui metastore Data Lake Formation (DLF) bawaan, sehingga menyediakan solusi unifikasi stream-batch yang lengkap. Layanan ini mendukung eksekusi pekerjaan dan konfigurasi parameter yang fleksibel untuk berbagai kebutuhan dalam analisis real-time dan penjadwalan produksi.
Informasi latar belakang
Realtime Compute for Apache Flink
Realtime Compute for Apache Flink Alibaba Cloud adalah layanan cloud arsitektur tanpa server yang sepenuhnya dikelola untuk Apache Flink. Layanan ini menyediakan platform siap pakai terpadu untuk pengembangan, operasi, dan pemeliharaan, serta menawarkan penagihan yang fleksibel. Layanan ini mencakup kemampuan siklus hidup lengkap seperti pengembangan pekerjaan, debugging data, eksekusi dan pemantauan pekerjaan, tuning otomatis, serta diagnostik cerdas. Untuk informasi lebih lanjut, lihat Apa itu Realtime Compute for Apache Flink?.
Apache Paimon
Apache Paimon adalah format penyimpanan data lake terpadu yang menggunakan Flink dan Spark untuk menghadirkan arsitektur lakehouse real-time guna unifikasi stream-batch. Paimon secara inovatif menggabungkan format lakehouse dengan teknologi Log-structured Merge-tree (LSM), sehingga memberikan kemampuan pembaruan streaming real-time dan kapabilitas pemrosesan aliran penuh pada data lake. Untuk informasi lebih lanjut, lihat Apache Paimon.
Prosedur
Langkah 1: Buat katalog Paimon
Katalog Paimon memungkinkan Anda mengelola semua tabel Paimon dalam direktori gudang yang sama dan menghubungkannya ke produk Alibaba Cloud lainnya. Untuk informasi lebih lanjut tentang cara membuat dan menggunakan katalog Paimon, lihat Kelola katalog Paimon.
-
Masuk ke Konsol Realtime Compute for Apache Flink.
-
Pada kolom Actions ruang kerja target Anda, klik Console.
-
Buat katalog Paimon.
Tambahkan katalog Paimon tipe DLF menggunakan antarmuka pengguna. Anda tidak perlu memasukkan Informasi AccessKey secara manual. Untuk petunjuk lengkap, lihat Kelola katalog Paimon.
-
Buat tabel Paimon.
Pada editor Script, masukkan perintah berikut. Lalu, pilih kode tersebut dan klik Run.
CREATE TABLE IF NOT EXISTS `paimon`.`test_paimon_db`.`test_append_tbl` ( id STRING, data STRING, category INT, ts STRING, dt STRING, hh STRING ) PARTITIONED BY (dt, hh) WITH ( 'write-only' = 'true' ); -
Buat pekerjaan stream.
-
Buat pekerjaan baru.
-
Pada panel navigasi kiri, pilih Development > ETL.
-
Buat pekerjaan stream baru. Pada kotak dialog New Blank Stream Draft, konfigurasikan parameter pekerjaan.
Parameter
Deskripsi
Name
Nama pekerjaan.
CatatanNama pekerjaan harus unik dalam proyek saat ini.
Engine Version
Versi engine Flink untuk pekerjaan saat ini. Untuk informasi lebih lanjut tentang nomor versi, kompatibilitas versi, dan tonggak siklus hidup, lihat Versi engine.
-
Klik create.
-
-
Tulis kode.
Pada draft stream baru, masukkan kode berikut untuk menghasilkan data secara kontinu menggunakan konektor datagen dan menuliskannya ke tabel Paimon.
CREATE TEMPORARY TABLE datagen ( id string, data string, category int ) WITH ( 'connector' = 'datagen', 'rows-per-second' = '100', 'fields.category.kind' = 'random', 'fields.category.min' = '1', 'fields.category.max' = '10' ); INSERT INTO `paimon`.`test_paimon_db`.`test_append_tbl` SELECT id, data, category, cast(LOCALTIMESTAMP as string) as ts, cast(CURRENT_DATE as string) as dt, cast(hour(LOCALTIMESTAMP) as string) as hh FROM datagen; -
Klik Deploy untuk menerbitkan pekerjaan ke lingkungan produksi.
-
Pada halaman Deployments, mulai pekerjaan tersebut. Untuk informasi lebih lanjut, lihat Mulai pekerjaan.
-
Langkah 2: Buat session SQL
Session SQL mendukung pengembangan dan kueri SQL. Untuk informasi lebih lanjut tentang session, lihat Session Manager.
-
Buka halaman Sessions.
-
Masuk ke Konsol EMR.
-
Pada panel navigasi kiri, pilih EMR Serverless > Spark.
-
Pada halaman Spark, klik nama ruang kerja target.
-
Pada halaman EMR Serverless Spark, klik Sessions pada panel navigasi kiri.
-
-
Pada katalog data ruang kerja Serverless Spark Anda, tambahkan DLF Catalog yang telah Anda buat pada Langkah 1.
-
Buat session SQL.
-
Pada tab SQL Session, klik Connect to SQL Session.
-
Pada halaman Create SQL Session, konfigurasikan parameter berikut, biarkan parameter lain tetap pada nilai default-nya, lalu klik create.
Parameter
Deskripsi
Name
Nama kustom untuk session SQL. Misalnya, paimon_compute.
-
Pada kolom Actions, klik START.
-
Langkah 3: Jalankan kueri interaktif atau orkestrasi tugas
EMR Serverless Spark menawarkan dua mode operasional untuk kebutuhan berbeda: kueri interaktif dan orkestrasi task. Mode kueri interaktif ideal untuk kueri cepat dan debugging, sedangkan mode orkestrasi task mendukung siklus hidup lengkap pengembangan, penerbitan, dan pemeliharaan pekerjaan.
Saat data sedang dituliskan, Anda dapat menggunakan EMR Serverless Spark untuk menjalankan kueri interaktif pada tabel Paimon kapan saja guna memeriksa status data real-time dan melakukan analisis cepat. Selain itu, Anda dapat menerbitkan pekerjaan yang telah dikembangkan dan membuat alur kerja untuk mengatur berbagai task. Anda dapat mengonfigurasi kebijakan penjadwalan untuk mengotomatiskan task, sehingga memastikan pemrosesan dan analisis data yang efisien dan otomatis.
Kueri interaktif
-
Buat pekerjaan SparkSQL.
-
Pada halaman EMR Serverless Spark, klik Development pada panel navigasi kiri.
-
Pada tab Development, klik Create.
-
Pada kotak dialog yang muncul, masukkan Name (misalnya, paimon_compact), atur Type menjadi SparkSQL, lalu klik OK.
-
Pada pojok kanan atas, pilih katalog data, database, dan session SQL yang telah Anda mulai pada langkah sebelumnya.
-
Masukkan pernyataan SQL pada editor pekerjaan baru.
-
Contoh 1: Kueri 10 baris pertama dari tabel
test_append_tbl.SELECT * FROM paimon.test_paimon_db.test_append_tbl limit 10;CatatanGanti nama katalog, nama database, dan nama tabel dalam pernyataan SQL agar sesuai dengan lingkungan Anda.
Hasilnya mencakup bidang id, data, category, ts, dt, dan hh, di mana kolom id dan data berupa string hash, category bernilai numerik, ts merupakan timestamp lengkap (misalnya,
2024-06-24 19:00:00.446), dt adalah tanggal, dan hh adalah jam. -
Contoh 2: Hitung jumlah baris yang memenuhi kriteria tertentu dalam tabel
test_append_tbl.SELECT COUNT(*) FROM paimon.test_paimon_db.test_append_tbl WHERE dt = '2024-06-24' AND hh = '19';CatatanGanti nama katalog, nama database, nama tabel, dan kondisi partisi (dt dan hh) dalam pernyataan SQL agar sesuai dengan lingkungan Anda.
Kueri mengembalikan satu baris dengan nilai
count(1)sebesar360000.
-
-
-
Jalankan dan terbitkan pekerjaan.
-
Klik Run.
Anda dapat melihat hasilnya pada tab Execution Results. Jika terjadi error, periksa tab Execution Issues.
-
Setelah memastikan pekerjaan berjalan sesuai harapan, klik Publish pada pojok kanan atas.
-
Pada kotak dialog Publish, Anda dapat memasukkan catatan rilis lalu klik OK.
-
Orkestrasi task
-
Periksa informasi file sebelum kompaksi.
Pada halaman Development, buat pekerjaan SparkSQL untuk mengkueri tabel sistem $files Paimon guna mengambil informasi file sebelum kompaksi secara cepat. Untuk informasi lebih lanjut tentang cara membuat pekerjaan SparkSQL, lihat Kembangkan pekerjaan SparkSQL.
SELECT file_path, record_count, file_size_in_bytes FROM paimon.test_paimon_db.`test_append_tbl$files`;CatatanGanti nama katalog dan nama database dalam pernyataan SQL agar sesuai dengan lingkungan Anda.
Sebelum kompaksi, hasil kueri menunjukkan 14 file data ORC. Sebagian besar file memiliki
record_countsebesar 18.100 (beberapa 18.200, dan yang pertama 8.700), serta nilaifile_size_in_bytesberkisar antara sekitar 1.752.386 hingga 3.664.183. -
Pada pekerjaan SparkSQL yang telah Anda buat (paimon_compact), masukkan SQL kompaksi berikut, lalu terbitkan pekerjaan tersebut.
CALL paimon.sys.compact ( table => 'test_paimon_db.test_append_tbl', partitions => 'dt=\"2024-06-24\",hh=\"19\"', order_strategy => 'zorder', order_by => 'category' ); -
Buat alur kerja.
-
Pada halaman EMR Serverless Spark, klik Workflows pada panel navigasi kiri.
-
Pada halaman Workflows, klik Create Workflow.
-
Pada panel Create Workflow, masukkan Name (misalnya, paimon_workflow_task), lalu klik Next.
Konfigurasikan parameter pada bagian Other Settings sesuai kebutuhan. Untuk informasi lebih lanjut tentang parameter tersebut, lihat Kelola alur kerja.
-
Pada kanvas node baru, klik Add Node.
-
Dari daftar drop-down Path, pilih pekerjaan SparkSQL yang telah diterbitkan (paimon_compact). Masukkan parameter Spark Configuration, lalu klik Save.
Parameter
Deskripsi
Name
Nama kustom untuk session SQL. Misalnya, paimon_compute.
-
Pada kanvas node baru, klik Publish Workflow, lalu klik OK.
-
-
Jalankan alur kerja.
-
Pada halaman Workflows, klik Name alur kerja baru (misalnya, paimon_workflow_task).
-
Pada halaman Workflow Runs, klik Manually Run.
-
Pada kotak dialog Run Workflow, klik OK.
-
-
Verifikasi hasil kompaksi.
Setelah alur kerja berhasil dijalankan, eksekusi kembali kueri SQL yang sama untuk membandingkan jumlah, jumlah record, dan ukuran file sebelum dan sesudah kompaksi.
SELECT file_path, record_count, file_size_in_bytes FROM paimon.test_paimon_db.`test_append_tbl$files`;Setelah kompaksi, hasil kueri menunjukkan hanya tersisa tiga file ORC dalam tabel: data-c971b2a7-…-0.orc (record_count 144.591, file_size_in_bytes 29.122.164), data-17d0b4c6-…-0.orc (record_count 179.571, file_size_in_bytes 36.159.348), dan
data-a8f27c6b-…-0.orc(record_count35.838,file_size_in_bytes7.243.404). Hal ini menunjukkan bahwa file-file kecil telah berhasil digabungkan.