All Products
Search
Document Center

E-MapReduce:Impor data

Last Updated:Jun 17, 2026

StarRocks mendukung berbagai model data untuk berbagai skenario bisnis, dan semua data harus diorganisasi sesuai dengan model tertentu. Pelajari konsep dasar, prinsip, konfigurasi sistem, kasus penggunaan, praktik terbaik, dan FAQ mengenai berbagai metode impor.

Informasi latar belakang

Impor data membersihkan, mentransformasi, dan memuat data mentah ke dalam StarRocks berdasarkan model data tertentu untuk kueri. StarRocks menyediakan berbagai metode impor yang dapat Anda pilih berdasarkan volume data, frekuensi impor, dan persyaratan bisnis lainnya.

Gambar berikut menunjukkan hubungan antara metode impor StarRocks dan berbagai sumber data.StarRocks schematic diagram

Anda dapat memilih metode impor yang berbeda berdasarkan sumber data:

  • Impor data offline: Jika data sumber Anda berada di Hive atau HDFS, gunakan Broker Load. Untuk impor kompleks yang melibatkan banyak tabel data, Anda dapat menggunakan . Metode ini memiliki performa lebih rendah dibandingkan Broker Load tetapi menghindari migrasi data. Jika satu tabel memiliki volume data yang sangat besar atau digunakan sebagai kamus data global untuk deduplikasi presisi, pertimbangkan untuk menggunakan Spark Load.

  • Impor data real-time: Setelah Anda menyinkronkan data log dan binary logging (binlog) database ke Kafka, Anda dapat menggunakan Routine Load untuk mengimpor data tersebut ke StarRocks. Jika proses impor Anda melibatkan penggabungan tabel yang kompleks dan pra-pemrosesan extract, transform, and load (ETL), Anda dapat menggunakan Flink (Flink Connector) untuk memproses data terlebih dahulu, lalu menulis hasilnya ke StarRocks menggunakan Stream Load.

  • Menulis ke StarRocks dari program: Anda dapat menggunakan Stream Load. Contohnya tersedia dalam demo Java atau Python pada dokumentasi Stream Load.

  • Mengimpor file teks: Anda dapat menggunakan Stream Load.

  • Mengimpor data MySQL: Anda dapat menggunakan tabel eksternal MySQL. Untuk mengimpor data, jalankan perintah insert into new_table select * from external_table.

  • Impor internal dalam StarRocks: Anda dapat menggunakan metode Insert Into, yang bekerja dengan penjadwal eksternal untuk melakukan pemrosesan ETL sederhana.

Catatan

Gambar dan beberapa konten dalam topik ini berasal dari dokumentasi Overview of data loading untuk StarRocks open source.

Perhatian

Saat mengimpor data ke StarRocks, biasanya Anda menggunakan program untuk membuat koneksi. Perhatikan hal-hal berikut:

  • Pilih metode impor yang sesuai berdasarkan volume data, frekuensi impor, dan lokasi sumber data.

    Misalnya, jika data sumber berada di HDFS, Anda dapat menggunakan Broker Load.

  • Tentukan protokol untuk metode impor: Jika Anda memilih Broker Load, sistem eksternal harus mampu menggunakan protokol MySQL untuk secara berkala mengirimkan dan memeriksa pekerjaan impor.

  • Tentukan jenis metode impor: Metode impor bersifat sinkron atau asinkron. Untuk metode impor asinkron, setelah mengirimkan pekerjaan impor, Anda harus menjalankan perintah untuk memeriksa status pekerjaan tersebut. Hasil perintah ini menunjukkan apakah impor berhasil atau tidak.

  • Buat kebijakan pembuatan label: Kebijakan tersebut harus memastikan bahwa setiap label unik dan tetap untuk setiap batch data.

  • Jamin semantik Exactly-Once: Sistem eksternal harus menjamin impor data At-Least-Once. Mekanisme label StarRocks menjamin impor data At-Most-Once. Kedua mekanisme ini secara bersama-sama menjamin semantik Exactly-Once untuk seluruh proses impor data.

Istilah

Term

Description

Import job

Membaca data sumber yang dikirimkan oleh pengguna, membersihkan dan mentransformasinya, lalu memuatnya ke dalam sistem StarRocks. Setelah impor selesai, data tersebut dapat dikueri.

Label

Mengidentifikasi suatu import job. Semua import job memiliki label.

Label dapat ditentukan oleh pengguna atau dihasilkan sistem dan bersifat unik dalam satu database. Label hanya dapat digunakan untuk satu import job yang berhasil. Setelah import job dengan label tertentu berhasil, Anda tidak dapat menggunakan kembali label tersebut untuk mengirimkan import job lain. Jika import job gagal, label tersebut dapat digunakan kembali. Mekanisme ini menjamin semantik impor At-Most-Once.

Atomicity

Semua metode impor di StarRocks menyediakan atomicity. Artinya, untuk satu import job, baik semua data valid berhasil diimpor atau tidak sama sekali. Impor parsial tidak terjadi. Data valid di sini tidak mencakup data yang difilter karena masalah kualitas, seperti error konversi tipe. Untuk informasi lebih lanjut tentang masalah kualitas data, lihat FAQ tentang impor data.

Protokol MySQL dan HTTP

StarRocks menyediakan dua antarmuka protokol akses untuk mengirimkan pekerjaan: protokol MySQL dan protokol HTTP.

Broker Load

Membaca data dari sumber eksternal seperti HDFS melalui program broker yang dideploy dan mengimpornya ke StarRocks. Proses broker menggunakan sumber daya komputasinya sendiri untuk memproses data secara awal.

Spark Load

Menggunakan sumber daya Spark eksternal untuk memproses data secara awal dan menghasilkan file perantara yang dibaca oleh StarRocks untuk impor. Spark Load bersifat asinkron — buat import job menggunakan protokol MySQL dan periksa hasilnya dengan perintah SHOW LOAD.

FE

Frontend (FE). Node metadata dan penjadwalan StarRocks, bertanggung jawab untuk menghasilkan rencana eksekusi impor dan menjadwalkan tugas impor.

BE

Backend (BE). Node komputasi dan penyimpanan StarRocks, bertanggung jawab atas ETL dan penyimpanan data selama impor.

Tablet

Shard logis dari tabel StarRocks. Sebuah tabel dapat dibagi menjadi beberapa tablet sesuai aturan partisi dan bucketing. Untuk informasi lebih lanjut, lihat Data distribution.

Prinsip dasar

Alur eksekusi impor ditunjukkan pada gambar berikut.StarRocks flow chart

Sebuah import job terdiri dari lima tahap berikut.

Tahap

Deskripsi

PENDING

Opsional. Pada tahap ini, import job telah dikirimkan dan sedang menunggu FE menjadwalkan eksekusinya.

Broker Load dan Spark Load mencakup tahap ini.

ETL

Opsional. Tahap ini melakukan pra-pemrosesan data, termasuk pembersihan, partisi, pengurutan, dan agregasi.

Spark Load mencakup tahap ini. Tahap ini menggunakan sumber daya komputasi eksternal Spark untuk menyelesaikan proses ETL.

LOADING

Pada tahap ini, data terlebih dahulu dibersihkan dan ditransformasi, lalu dikirim ke BE untuk diproses. Setelah semua data dimuat, pekerjaan memasuki status menunggu hingga data berlaku. Status import job saat ini masih LOADING.

FINISHED

Setelah semua data yang terlibat dalam import job berlaku, status pekerjaan berubah menjadi FINISHED. Data dari pekerjaan FINISHED dapat dikueri. FINISHED adalah status akhir dari import job yang berhasil.

CANCELLED

Sebelum status pekerjaan berubah menjadi FINISHED, pekerjaan tersebut dapat dibatalkan kapan saja dan memasuki status CANCELLED. Misalnya, Anda dapat membatalkannya secara manual, atau terjadi error selama impor. CANCELLED juga merupakan status akhir untuk import job.

Format impor data tercantum dalam tabel berikut.

Tipe

Deskripsi

Tipe integer

TINYINT, SMALLINT, INT, BIGINT, dan LARGEINT. Contoh: 1, 1000, 1234.

Tipe floating-point

FLOAT, DOUBLE, dan DECIMAL. Contoh: 1,1; 0,23; 0,356.

Tipe tanggal

DATE dan DATETIME. Contoh: 2017-10-03, 2017-06-13 12:34:03.

Tipe string

CHAR dan VARCHAR. Contoh: I am a student, a.

Metode impor

StarRocks menyediakan lima metode impor untuk berbagai sumber data seperti HDFS, Kafka, dan file lokal. Metode-metode ini bersifat sinkron atau asinkron.

Semua metode impor mendukung format data CSV. Broker Load juga mendukung format data Parquet dan ORC.

Pengenalan metode impor

Metode impor

Deskripsi

Jenis impor

Broker Load

Membaca sumber data eksternal melalui proses broker dan membuat import job di StarRocks melalui protokol MySQL. Pekerjaan berjalan secara asinkron. Lihat hasilnya dengan perintah SHOW LOAD.

Cocok untuk data di sistem penyimpanan yang dapat diakses broker seperti HDFS, dengan volume data puluhan hingga ratusan gigabyte. Untuk informasi lebih lanjut, lihat Broker Load.

Impor asinkron

Spark Load

Menggunakan sumber daya Spark eksternal untuk memproses data yang diimpor secara awal, meningkatkan performa untuk dataset besar dan mengurangi penggunaan sumber daya kluster StarRocks. Metode asinkron ini memerlukan pembuatan pekerjaan melalui protokol MySQL dan pemeriksaan hasil dengan perintah SHOW LOAD.

Spark Load cocok untuk migrasi data dalam jumlah besar (hingga tingkat terabyte) ke StarRocks untuk pertama kalinya. Data sumber harus berada di sistem penyimpanan yang dapat diakses Spark, seperti HDFS. Untuk informasi lebih lanjut, lihat Spark Load.

Impor asinkron

Stream Load

Metode sinkron yang mengimpor file lokal atau aliran data ke StarRocks melalui protokol HTTP. Hasil impor dikembalikan langsung dalam respons.

Cocok untuk mengimpor file lokal atau data streaming dari program. Untuk informasi lebih lanjut, lihat Stream Load.

Impor sinkron

Routine Load

Mengimpor data secara otomatis dari sumber yang ditentukan dengan membuat thread persisten. Kirimkan pekerjaan routine load melalui protokol MySQL untuk terus-menerus membaca dan mengimpor data dari sumber seperti Kafka. Untuk informasi lebih lanjut, lihat Routine Load.

Impor asinkron

Insert Into

Seperti pernyataan `Insert` di MySQL, StarRocks menyediakan metode INSERT INTO tbl SELECT ...; untuk membaca data dari satu tabel StarRocks dan mengimpornya ke tabel lain. Anda juga dapat menggunakan INSERT INTO tbl VALUES(...); untuk memasukkan satu baris data. Untuk informasi lebih lanjut, lihat Insert Into.

Impor sinkron

Jenis impor

Penting

Jika program eksternal menggunakan fitur impor data StarRocks, Anda harus terlebih dahulu menentukan jenis metode impor yang akan digunakan, lalu menentukan logika koneksi.

  • Impor sinkron

    Dalam impor sinkron, StarRocks segera mengeksekusi tugas dan mengembalikan hasilnya, yang menunjukkan apakah impor berhasil atau tidak.

    Prosedur:

    1. Pengguna (sistem eksternal) membuat tugas impor.

    2. StarRocks mengembalikan hasil impor.

    3. Pengguna (sistem eksternal) memeriksa hasil impor. Jika impor gagal, pengguna dapat membuat ulang tugas impor.

  • Impor asinkron

    Dalam impor asinkron, StarRocks segera mengembalikan pesan keberhasilan pembuatan, tetapi data belum diimpor. Anda harus melakukan polling status pekerjaan dengan menjalankan perintah. Jika pembuatan tugas gagal, Anda dapat mencoba lagi berdasarkan informasi kegagalannya.

    Prosedur:

    1. Pengguna (sistem eksternal) membuat tugas impor.

    2. StarRocks mengembalikan hasil pembuatan tugas.

    3. Pengguna (sistem eksternal) memeriksa hasil pembuatan tugas. Jika tugas berhasil dibuat, lanjutkan ke langkah 4. Jika tidak, kembali ke langkah 1 dan coba buat ulang tugas impor.

    4. Pengguna (sistem eksternal) melakukan polling status tugas hingga statusnya menjadi FINISHED atau CANCELLED.

Skenario

Skenario

Deskripsi

Impor HDFS

Jika data sumber disimpan di HDFS dan volumenya antara puluhan hingga ratusan gigabyte, Anda dapat menggunakan metode Broker Load untuk mengimpor data ke StarRocks. Proses broker yang dideploy harus dapat mengakses sumber data HDFS. Pekerjaan impor berjalan secara asinkron. Anda dapat melihat hasil impor menggunakan perintah SHOW LOAD.

Jika data sumber disimpan di HDFS dan volumenya mencapai tingkat terabyte, Anda dapat menggunakan metode Spark Load untuk mengimpor data ke StarRocks. Proses Spark yang dideploy harus dapat mengakses sumber data HDFS. Pekerjaan impor berjalan secara asinkron. Anda dapat melihat hasil impor menggunakan perintah SHOW LOAD.

Untuk sumber data eksternal lainnya, Anda juga dapat menggunakan Broker Load atau Spark Load untuk mengimpor data, selama proses broker atau Spark dapat membaca dari sumber data yang sesuai.

Impor file lokal

Untuk file lokal di bawah 10 GB, gunakan Stream Load. Buat pekerjaan impor melalui protokol HTTP — pekerjaan berjalan secara sinkron dan langsung mengembalikan hasilnya.

Impor Kafka

Untuk data real-time dari sumber streaming seperti Kafka, gunakan Routine Load. Buat pekerjaan routine load melalui protokol MySQL, dan StarRocks akan terus-menerus membaca dan mengimpor data.

Insert Into import

Untuk pengujian manual dan pemrosesan data sementara, Anda dapat menggunakan metode Insert Into untuk menulis data ke tabel StarRocks.

Pernyataan INSERT INTO tbl SELECT ...; membaca data dari satu tabel StarRocks dan mengimpornya ke tabel lain. Pernyataan INSERT INTO tbl VALUES(...); memasukkan satu baris data ke tabel yang ditentukan.

Batasan memori

Atur parameter untuk membatasi penggunaan memori per import job dan mencegah error kehabisan memori (OOM). Metode pembatasan memori berbeda-beda tergantung metode impornya—lihat dokumentasi masing-masing metode untuk detailnya.

Sebuah import job biasanya didistribusikan ke beberapa BE. Parameter batasan memori membatasi penggunaan memori satu import job pada satu BE, bukan total seluruh kluster. Setiap BE juga memiliki batas memori total untuk semua import job. Untuk informasi lebih lanjut, lihat Konfigurasi sistem umum.

Batasan memori yang kecil dapat mengurangi efisiensi impor karena menyebabkan seringnya penulisan ke disk, sedangkan batasan yang besar berisiko menyebabkan error OOM dalam kondisi konkurensi tinggi. Atur parameter memori berdasarkan kebutuhan workload Anda.

Konfigurasi sistem umum

Konfigurasi FE

Konfigurasikan parameter FE berikut dalam file fe.conf.

Parameter

Deskripsi

max_load_timeout_second

Periode timeout maksimum dan minimum untuk import job, dalam detik. Timeout maksimum default adalah 3 hari, dan minimum default adalah 1 detik. Timeout kustom yang Anda atur untuk import job tidak boleh melebihi rentang ini. Parameter ini berlaku untuk semua jenis tugas impor.

min_load_timeout_second

desired_max_waiting_jobs

Jumlah maksimum tugas impor yang dapat ditampung oleh antrian tunggu. Nilai default adalah 100.

Misalnya, jika jumlah tugas impor dalam status PENDING (menunggu eksekusi) di FE mencapai nilai ini, permintaan impor baru akan ditolak. Konfigurasi ini hanya berlaku untuk impor yang dieksekusi secara asinkron. Jika jumlah tugas impor asinkron yang menunggu mencapai batas, permintaan berikutnya untuk membuat import job akan ditolak.

max_running_txn_num_per_db

Jumlah maksimum tugas impor yang sedang berjalan di setiap database. Ini dihitung untuk semua jenis impor. Nilai default adalah 100.

Ketika jumlah tugas impor yang sedang berjalan di database melebihi nilai maksimum, tugas impor berikutnya tidak akan dieksekusi. Untuk pekerjaan sinkron, pekerjaan tersebut ditolak. Untuk pekerjaan asinkron, pekerjaan tersebut menunggu dalam antrian.

label_keep_max_second

Periode retensi untuk catatan tugas impor.

Catatan tugas impor yang selesai (FINISHED atau CANCELLED) disimpan dalam sistem StarRocks selama periode waktu yang ditentukan oleh parameter ini. Nilai default adalah 3 hari. Parameter ini berlaku untuk semua jenis tugas impor.

Konfigurasi BE

Konfigurasikan parameter BE berikut dalam file be.conf.

Parameter

Deskripsi

push_write_mbytes_per_sec

Batas kecepatan penulisan untuk satu tablet pada BE. Nilai default adalah 10, artinya 10 MB/detik.

Kecepatan penulisan maksimum untuk satu tablet pada BE biasanya antara 10 MB/detik hingga 30 MB/detik, tergantung skema dan sistem. Anda dapat menyesuaikan parameter ini untuk mengontrol kecepatan impor.

write_buffer_size

Selama impor data, data pertama-tama ditulis ke blok memori pada BE. Ketika blok memori ini mencapai ambang batas, data tersebut ditulis ke disk. Nilai default adalah 100 MB.

Ambang batas yang kecil dapat menyebabkan banyak file kecil di BE. Anda dapat menaikkan ambang batas ini untuk mengurangi jumlah file. Namun, ambang batas yang besar dapat menyebabkan timeout RPC. Untuk informasi lebih lanjut, lihat parameter tablet_writer_rpc_timeout_sec.

tablet_writer_rpc_timeout_sec

Timeout RPC untuk mengirimkan satu batch (1024 baris) selama proses impor. Default adalah 600 detik.

RPC ini mungkin melibatkan penulisan beberapa blok memori tablet ke disk. Oleh karena itu, timeout RPC dapat terjadi karena penulisan ke disk. Anda dapat menyesuaikan timeout untuk mengurangi error timeout, seperti send batch fail. Selain itu, jika Anda menaikkan parameter write_buffer_size, Anda juga harus menaikkan parameter tablet_writer_rpc_timeout_sec.

streaming_load_rpc_max_alive_time_sec

Selama proses impor, StarRocks memulai writer untuk setiap tablet guna menerima dan menulis data. Parameter ini menentukan timeout tunggu writer tersebut. Default adalah 600 detik.

Jika writer tidak menerima data apa pun dalam waktu yang ditentukan, writer tersebut akan dihapus secara otomatis. Ketika kecepatan pemrosesan sistem lambat, writer mungkin tidak menerima batch data berikutnya dalam waktu lama, sehingga menyebabkan error impor: TabletWriter add batch with unknown id. Dalam kasus ini, Anda dapat menaikkan parameter ini.

load_process_max_memory_limit_percent

Parameter-parameter ini menentukan batas memori maksimum dan persentase memori maksimum, masing-masing. Keduanya membatasi total memori yang dapat digunakan untuk tugas impor pada satu BE. Sistem menggunakan nilai yang lebih kecil dari keduanya sebagai batas memori akhir untuk tugas impor pada BE tersebut.

  • load_process_max_memory_limit_percent: Persentase dari batas memori total BE. Default adalah 80. Batas memori total, mem_limit, defaultnya adalah 80% dari memori fisik. Misalnya, jika memori fisik adalah M, batas memori impor default adalah M × 80% × 80%.

  • load_process_max_memory_limit_bytes: Default adalah 100 GB.

load_process_max_memory_limit_bytes