All Products
Search
Document Center

OpenLake:Mengkueri dan Menganalisis Data Paimon Menggunakan StarRocks: Skenario dan Praktik

Last Updated:Jan 31, 2026

Ikhtisar

StarRocks menyediakan fitur kueri data lake siap pakai yang ideal untuk analisis kueri eksploratif terhadap data di dalam data lake. Paimon adalah format data lake generasi berikutnya yang menyediakan fitur inti berikut:

  • Pembaruan real-time yang efisien: Ingesti dan pembaruan data dengan throughput tinggi dan latensi rendah

  • Pemrosesan stream dan batch terpadu: Mendukung pembacaan dan penulisan baik dalam mode stream maupun batch

  • Fitur data lake yang lengkap: atomicity, consistency, isolation, and durability (ACID), time travel, schema evolution, dan lainnya.

Topik ini menjelaskan skenario dan praktik terbaik untuk mengkueri serta menganalisis data dalam format data lake Paimon menggunakan StarRocks.

Skenario aplikasi StarRocks + Paimon

Analitik lakehouse: Lakukan ingesti data ke dalam data lake menggunakan Flink dan Paimon, lalu manfaatkan kemampuan analitik StarRocks untuk memperkuat Paimon.

Pemrosesan batch: Setelah data diingesti ke Paimon sebagai lapisan Operational Data Store (ODS), Anda dapat menggunakan materialized view StarRocks untuk mengurangi biaya pemeliharaan pipeline.

  1. Simpan seluruh data dalam format data lake Paimon dan gunakan StarRocks untuk langsung mempercepat kueri terhadap data lake tersebut.

    • Aktifkan Data Cache untuk meningkatkan performa kueri.

    • Bangun kemampuan kueri ad hoc berdasarkan data lake.

    • Skenario: Buat solusi pemrosesan stream dan batch terpadu dengan StarRocks dan Paimon.

  2. Data disimpan di Paimon tetapi tidak dikueri secara langsung. Data tersebut memerlukan transformasi lebih lanjut (ODS → DWD → DWS → ADS) menjadi tabel lebar, operasi agregasi, dan tabel sink. Hal ini menyediakan antarmuka yang sederhana dan terpadu bagi pengguna akhir.

    • Buat materialized view berdasarkan tabel eksternal untuk akselerasi transparan dan refresh terjadwal.

    • Gunakan materialized view StarRocks untuk transformasi data ekstrak, transformasi, dan muat (ETL), serta manfaatkan format native StarRocks untuk konversi yang efisien.

    • Skenario: Laporan BI dan laporan dengan konkurensi tinggi serta latensi rendah.

  3. Data disimpan di Paimon. Anda dapat menggunakan StarRocks sebagai compute engine untuk menjalankan pekerjaan ETL dan menulis hasilnya kembali ke data lake melalui data sink.

    • StarRocks mendukung mekanisme penjadwalan otomatis dan eksternal untuk materialized view.

    • Anda dapat memanfaatkan fitur penjadwalan otomatis dan isolasi resource untuk materialized view guna mencapai transformasi data yang efisien.

    • Anda dapat menulis hasil ke data lake melalui data sink.

    • Skenario: Seluruh data berada di Paimon dan memerlukan berbagi data lintas engine.

Kemampuan optimasi StarRocks untuk Paimon

  • Akselerasi materialized view:

    • StarRocks menyediakan materialized view yang direfresh secara asinkron dan mendukung pembaruan data tingkat partisi.

    • StarRocks secara otomatis menyimpan data panas di memori dan menggunakan teknik query rewrite untuk memilih jalur eksekusi secara dinamis.

  • Penulisan batch Paimon:

    • StarRocks secara native mendukung Batch Sink untuk tabel Paimon. Fitur ini kompatibel dengan tipe tabel Append dan Update untuk memastikan hasil transformasi ditulis kembali ke data lake secara real-time.

  • Fitur kueri yang ditingkatkan:

    • StarRocks sepenuhnya mendukung operasi DDL dan kueri time travel pada tabel Paimon untuk pelacakan versi data yang akurat.

  • Engine optimasi performa:

    • Anda dapat membaca data menggunakan Native ORC/Parquet Reader.

    • StarRocks mengoptimalkan kueri skala besar dengan caching metadata dan mekanisme pemrosesan terdistribusi.

    • StarRocks meningkatkan kemampuan perencanaan kueri dari cost-based optimizer (CBO) menggunakan statistik yang komprehensif.

Ingesti Data

Metode untuk mempercepat kueri StarRocks pada format lake Paimon

Pada StarRocks 3.2.9 dan versi setelahnya, Anda dapat langsung mengkueri data tabel Paimon setelah membuat Paimon Catalog.

Sebagai mesin kueri online analytical processing (OLAP), StarRocks perlu memindai file data di Hadoop Distributed File System (HDFS) atau di object storage. Semakin banyak file yang dibaca oleh suatu kueri, semakin besar overhead I/O-nya. Dalam skenario kueri ad hoc, akses berulang ke data yang sama juga menyebabkan overhead I/O berulang.

StarRocks menggunakan fitur seperti Data Cache dan materialized view asinkron untuk mencapai konkurensi lebih tinggi dan performa lebih baik pada laporan dan aplikasi yang berjalan di atas data lake.

Anda dapat menggunakan Data Cache untuk akselerasi dalam situasi berikut:

  • Kueri tidak memiliki bagian yang dapat digunakan ulang secara besar-besaran dan mungkin melibatkan data apa pun di dalam data lake.

  • Akses ke penyimpanan remote terpengaruh oleh fluktuasi atau ketidakstabilan signifikan.

Anda dapat menggunakan materialized view dalam situasi berikut:

  • Performa kueri masih belum memenuhi kebutuhan Anda terkait latensi dan konkurensi kueri, bahkan setelah Data Cache diaktifkan.

  • Kueri melibatkan bagian yang dapat digunakan ulang, seperti metode agregasi tetap atau pola join tertentu.

  • Data diorganisir berdasarkan partisi, dan kueri memiliki tingkat agregasi yang tinggi, misalnya agregasi harian.

Aktifkan Deletion Vector di StarRocks untuk mengkueri format data lake Paimon

Untuk mengaktifkan fitur ini, konfigurasikan `'deletion-vectors.enabled' = 'true'` dalam pernyataan pembuatan tabel primary key.

Contohnya:

create table dv4 (
    id int,
    name string
) tblproperties (
    'bucket' = '1',
    'primary-key' = 'id',
    'file.format' = 'parquet',
    'deletion-vectors.enabled' = 'true'
);

Aktifkan Data Cache di StarRocks untuk mengkueri format data lake Paimon

StarRocks menyediakan fitur Data Cache yang membagi data mentah dari sistem penyimpanan eksternal menjadi beberapa blok berdasarkan kebijakan tertentu dan menyimpannya di node StarRocks lokal. Praktik ini menghindari overhead pengambilan data remote berulang dan lebih lanjut meningkatkan performa analisis kueri untuk data panas. Data Cache StarRocks kini mendukung format data lake Paimon.

Langkah-langkah mengaktifkan Data Cache

# Untuk versi 3.3, data_cache diaktifkan secara default. Untuk versi 3.2, fitur ini dinonaktifkan secara default dan harus diaktifkan.
datacache_enable=true
# Jumlah maksimum data yang dapat di-cache pada satu disk. Nilainya bisa berupa persentase atau jumlah byte. Default-nya adalah 20%, yaitu 20% dari kapasitas disk maksimum. Contoh ini mengubahnya menjadi 20 GB.
datacache_disk_size=21474836480
# Jumlah maksimum data yang dapat di-cache di memori. Nilainya bisa berupa persentase atau jumlah byte. Default-nya adalah 10%. Contoh ini mengubahnya menjadi 4 GB.
datacache_mem_size=4294967296
# Jalur disk yang digunakan untuk cache. Ini tidak dapat diubah.
datacache_disk_path=/opt/starrocks/be/storage/disk1/datacache

Setelah kluster direstart, eksekusi perintah berikut di SQL Editor.

SET GLOBAL enable_scan_datacache = true;

Hal ini mengaktifkan Data Cache secara global.

Memastikan Data Cache terpakai

Jalankan kueri Paimon lagi. Jika cache terpakai, Anda akan melihat peningkatan signifikan dalam efisiensi kueri. Anda dapat memeriksa Query Profile untuk memverifikasi apakah cache terpakai.

Setelah profil diaktifkan, buka All Queries, klik ID kueri, lalu unduh profil dari halaman profil tersebut. Anda dapat mengamati metrik berikut untuk menentukan apakah Data Cache terpakai.

  • DataCacheReadBytes: Jumlah data yang dibaca dari memori dan disk.

  • DataCacheWriteBytes: Jumlah data yang dimuat dari sistem penyimpanan eksternal ke memori dan disk.

Seperti yang ditunjukkan pada contoh berikut, kueri membaca 10,107 GB data dari Data Cache dan tidak ada data yang dibaca dari sistem file eksternal. Hal ini menunjukkan cache hit penuh.

- DataCache:
 - DataCacheReadBlockBufferBytes: 920.146 MB
   - __MAX_OF_DataCacheReadBlockBufferBytes: 14.610 MB
   - __MIN_OF_DataCacheReadBlockBufferBytes: 1.762 MB
 - DataCacheReadBlockBufferCounter: 27.923K (27923)
   - __MAX_OF_DataCacheReadBlockBufferCounter: 440
   - __MIN_OF_DataCacheReadBlockBufferCounter: 55
 - DataCacheReadBytes: 10.107 GB
   - __MAX_OF_DataCacheReadBytes: 163.518 MB
   - __MIN_OF_DataCacheReadBytes: 20.225 MB
   - DataCacheReadDiskBytes: 563.468 MB
     - __MAX_OF_DataCacheReadDiskBytes: 30.965 MB
     - __MIN_OF_DataCacheReadDiskBytes: 0.000 B
   - DataCacheReadMemBytes: 9.556 GB
     - __MAX_OF_DataCacheReadMemBytes: 142.791 MB
     - __MIN_OF_DataCacheReadMemBytes: 20.225 MB
 - DataCacheReadCounter: 41.456K (41456)
   - __MAX_OF_DataCacheReadCounter: 655
   - __MIN_OF_DataCacheReadCounter: 81
 - DataCacheReadTimer: 9.157ms
   - __MAX_OF_DataCacheReadTimer: 48.792ms
   - __MIN_OF_DataCacheReadTimer: 478.759us
 - DataCacheSkipReadBytes: 0.000 B
 - DataCacheSkipReadCounter: 0
 - DataCacheWriteBytes: 0.000 B
 - DataCacheWriteCounter: 0
 - DataCacheWriteFailBytes: 0.000 B
 - DataCacheWriteFailCounter: 0
 - DataCacheWriteTimer: 0ns

Dalam lingkungan produksi, performa Data Cache bervariasi tergantung pola kueri yang berbeda. Umumnya, fitur ini dapat memberikan peningkatan performa mulai dari puluhan persen hingga beberapa kali lipat lebih cepat.

Buat materialized view asinkron di StarRocks untuk mengkueri format data lake Paimon

Aplikasi di lingkungan produksi sering menjalankan kueri kompleks pada beberapa tabel besar yang melibatkan banyak join dan agregasi data. Memproses kueri semacam ini menghabiskan banyak sumber daya sistem dan waktu, sehingga menyebabkan biaya kueri yang tinggi. StarRocks dapat mengatasi masalah ini menggunakan materialized view asinkron.

Jika Anda sering perlu menjalankan jenis kueri ini di lingkungan produksi, Anda dapat membuat materialized view asinkron untuk mempercepatnya. Untuk informasi lebih lanjut, lihat Gunakan materialized view untuk mempercepat kueri data lake.

Setelah materialized view dibuat, jalankan kueri lagi. StarRocks secara otomatis akan menulis ulang SQL kueri untuk membaca data langsung dari materialized view tersebut.

Dalam lingkungan produksi nyata, materialized view digunakan dalam skenario yang memiliki persyaratan tinggi terhadap latensi kueri. Cara pembuatan materialized view sangat memengaruhi waktu kueri akhir. Anda harus memilih metode pembuatan yang sesuai berdasarkan kebutuhan bisnis dan riwayat SQL kueri untuk memenuhi persyaratan bisnis tertentu.

Menulis data ke tabel Paimon

Catatan
  • Di StarRocks, data ditulis ke tabel Paimon menggunakan penulisan batch. Karena keterbatasan Paimon, Anda tidak dapat menulis ke tabel yang menggunakan bucket mode HASH_DYNAMIC atau CROSS_PARTITION. Skenario umum adalah menulis ke tabel primary key. Jika properti `bucket` tidak ditentukan dalam pernyataan pembuatan tabel, nilai default-nya adalah -1 (Dynamic Bucket Mode), yang mencegah operasi penulisan.

  • Kit pengembangan perangkat lunak (SDK) Paimon mensyaratkan bahwa kolom kunci partisi atau kolom kunci primer dalam data yang ditulis tidak boleh bernilai null. StarRocks tidak melakukan pemeriksaan awal terhadap data sebelum menulisnya ke tabel Paimon. Oleh karena itu, pengecualian akan dilemparkan jika Anda mencoba menulis nilai null ke dalam chunk yang berisi nilai.

INSERT INTO <catalog_name>.<database_name>.<table_name> (column1, column2, ...) VALUES (value1, value2, ...);

Sebagai contoh, masukkan data berikut langsung ke tabel `ads_age_pvalue_analytics`.

INSERT INTO dlf_catalog.sr_dlf_db.ads_age_pvalue_analytics (final_gender_code, age_level, pvalue_level, clicks, total_behaviors)
VALUES 
('M', '18-24', 'Low', 1500, 2500),
('F', '25-34', 'Medium', 2200, 3300),
('M', '35-44', 'High', 2800, 4000);

Mengimpor data Paimon ke tabel internal

Asumsikan Anda memiliki tabel OLAP di StarRocks bernama olap_tbl. Anda dapat mentransformasi data dari tabel Paimon dan mengimpornya ke tabel StarRocks olap_tbl sebagai berikut.

INSERT INTO default_catalog.olap_db.olap_tbl SELECT * FROM <paimon_catalog>.<db_name>.<table_name>;