All Products
Search
Document Center

E-MapReduce:Bangun data lake terpadu stream-batch dengan Flink, EMR Serverless Spark, dan Paimon

Last Updated:Jun 22, 2026

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.

  1. Masuk ke Konsol Realtime Compute for Apache Flink.

  2. Pada kolom Actions ruang kerja target Anda, klik Console.

  3. 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.

  4. 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'
    );
  5. Buat pekerjaan stream.

    1. Buat pekerjaan baru.

      1. Pada panel navigasi kiri, pilih Development > ETL.

      2. Buat pekerjaan stream baru. Pada kotak dialog New Blank Stream Draft, konfigurasikan parameter pekerjaan.

        Parameter

        Deskripsi

        Name

        Nama pekerjaan.

        Catatan

        Nama 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.

      3. Klik create.

    2. 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;
    3. Klik Deploy untuk menerbitkan pekerjaan ke lingkungan produksi.

    4. 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.

  1. Buka halaman Sessions.

    1. Masuk ke Konsol EMR.

    2. Pada panel navigasi kiri, pilih EMR Serverless > Spark.

    3. Pada halaman Spark, klik nama ruang kerja target.

    4. Pada halaman EMR Serverless Spark, klik Sessions pada panel navigasi kiri.

  2. Pada katalog data ruang kerja Serverless Spark Anda, tambahkan DLF Catalog yang telah Anda buat pada Langkah 1.

  3. Buat session SQL.

    1. Pada tab SQL Session, klik Connect to SQL Session.

    2. 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.

    3. 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

  1. Buat pekerjaan SparkSQL.

    1. Pada halaman EMR Serverless Spark, klik Development pada panel navigasi kiri.

    2. Pada tab Development, klik Create.

    3. Pada kotak dialog yang muncul, masukkan Name (misalnya, paimon_compact), atur Type menjadi SparkSQL, lalu klik OK.

    4. Pada pojok kanan atas, pilih katalog data, database, dan session SQL yang telah Anda mulai pada langkah sebelumnya.

    5. 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;
        Catatan

        Ganti 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';
        Catatan

        Ganti 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) sebesar 360000.

  2. Jalankan dan terbitkan pekerjaan.

    1. Klik Run.

      Anda dapat melihat hasilnya pada tab Execution Results. Jika terjadi error, periksa tab Execution Issues.

    2. Setelah memastikan pekerjaan berjalan sesuai harapan, klik Publish pada pojok kanan atas.

    3. Pada kotak dialog Publish, Anda dapat memasukkan catatan rilis lalu klik OK.

Orkestrasi task

  1. 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`;
    Catatan

    Ganti 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_count sebesar 18.100 (beberapa 18.200, dan yang pertama 8.700), serta nilai file_size_in_bytes berkisar antara sekitar 1.752.386 hingga 3.664.183.

  2. 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'
    );
  3. Buat alur kerja.

    1. Pada halaman EMR Serverless Spark, klik Workflows pada panel navigasi kiri.

    2. Pada halaman Workflows, klik Create Workflow.

    3. 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.

    4. Pada kanvas node baru, klik Add Node.

    5. 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.

    6. Pada kanvas node baru, klik Publish Workflow, lalu klik OK.

  4. Jalankan alur kerja.

    1. Pada halaman Workflows, klik Name alur kerja baru (misalnya, paimon_workflow_task).

    2. Pada halaman Workflow Runs, klik Manually Run.

    3. Pada kotak dialog Run Workflow, klik OK.

  5. 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_count 35.838, file_size_in_bytes 7.243.404). Hal ini menunjukkan bahwa file-file kecil telah berhasil digabungkan.