All Products
Search
Document Center

E-MapReduce:Baca dari dan tulis ke StarRocks

Last Updated:Jun 26, 2026

StarRocks menyediakan Spark Connector resmi untuk mengaktifkan transfer data antara Spark dan StarRocks. Anda dapat menambahkan konfigurasi yang diperlukan di EMR Serverless Spark untuk terhubung ke instans StarRocks. Topik ini menjelaskan cara membaca dari dan menulis ke StarRocks menggunakan EMR Serverless Spark.

Metode akses

Anda dapat mengakses StarRocks dengan dua cara, tergantung pada kebutuhan Anda:

Metode 1: Konfigurasi tingkat task/session

Dengan metode ini, Anda mengonfigurasi informasi koneksi StarRocks—seperti URL JDBC, username, dan password—di setiap task atau session. Metode ini cocok untuk skenario berikut:

  • Akses data sementara atau ad hoc

  • Task berbeda perlu mengakses kluster StarRocks yang berbeda

  • Anda memerlukan kontrol akses detail halus untuk setiap task

Metode 2: Konfigurasi terpusat dengan Data Catalog

Catatan
  • Pekerjaan yang dikirim melalui Livy atau Kyuubi tidak dapat mengakses Data Catalog StarRocks.

  • Hanya versi engine berikut yang didukung: esr-4.8.0 atau lebih baru, dan esr-5.2.0 atau lebih baru.

Gunakan fitur Data Catalog EMR Serverless Spark untuk menambahkan Data Catalog StarRocks. Setelah dikonfigurasi, semua pekerjaan dan session di ruang kerja dapat mengakses data yang telah diotorisasi di Data Catalog secara default, sehingga menghilangkan kebutuhan untuk mengonfigurasi ulang di setiap task. Untuk informasi selengkapnya, lihat Manage data catalogs.

Metode ini cocok untuk skenario berikut:

  • Anda memerlukan akses sering ke data StarRocks

  • Banyak task berbagi konfigurasi akses StarRocks yang sama

  • Anda ingin menyederhanakan konfigurasi task dan meningkatkan efisiensi pengembangan

Catatan

Untuk ruang kerja yang memerlukan akses jangka panjang dan sering ke StarRocks, kami merekomendasikan penggunaan Data Catalog (Metode 2) untuk mengurangi beban konfigurasi dan meningkatkan efisiensi pengembangan.

Prasyarat

  • Buat ruang kerja Serverless Spark. Untuk informasi selengkapnya, lihat Create a workspace.

  • Buat instans EMR Serverless StarRocks. Untuk informasi selengkapnya, lihat Create an instance.

Batasan

Versi engine Serverless Spark harus esr-2.5.0, esr-3.1.0, esr-4.1.0, atau lebih baru.

Prosedur

Langkah 1: Dapatkan dan unggah JAR Spark Connector

  1. Unduh JAR Spark Connector sesuai versi engine Anda. Untuk informasi selengkapnya, lihat Read data from StarRocks using Spark connector.

    Catatan

    Untuk versi engine esr-4.8.0 atau lebih baru dan esr-5.2.0 atau lebih baru, JAR Spark Connector sudah built-in. Anda dapat melewati langkah ini.

    Sebagai contoh, kami mengunduh JAR pre-compiled dari Maven Central Repository.

    Catatan

    File JAR Connector dinamai dalam format starrocks-spark-connector-${spark_version}_${scala_version}-${connector_version}.jar. Misalnya, jika Anda menggunakan versi engine esr-4.1.0 (Spark 3.5.2, Scala 2.12) dan ingin menggunakan versi connector 1.1.2, pilih starrocks-spark-connector-3.5_2.12-1.1.2.jar.

  2. Unggah JAR Spark Connector yang telah diunduh ke OSS. Untuk informasi selengkapnya, lihat Simple upload.

Langkah 2: Tambahkan koneksi jaringan

  1. Dapatkan informasi jaringan.

    Pada halaman EMR Serverless StarRocks, buka halaman Instance Details dari instans StarRocks target Anda untuk mendapatkan informasi Virtual Private Cloud (VPC) dan vSwitch.

  2. Buat Koneksi Jaringan.

    1. Pada halaman EMR Serverless Spark, navigasikan ke halaman Network Connection untuk ruang kerja Spark Anda dan klik Create Network Connection.

    2. Pada kotak dialog Create Network Connection, masukkan Name, pilih VPC dan vSwitch dari instans StarRocks, lalu klik OK.

      Catatan

      Koneksi Jaringan harus sesuai dengan instans StarRocks. Pilih vSwitch yang berada di VPC yang sama dengan instans StarRocks. Jika tidak tersedia vSwitch di zona ketersediaan saat ini, klik vSwitch untuk membuka konsol VPC dan membuatnya. Untuk informasi selengkapnya, lihat VPCs and vSwitches.

Langkah 3: Buat database dan tabel

  1. Hubungkan ke instans StarRocks. Untuk informasi selengkapnya, lihat Connect to a StarRocks instance using EMR StarRocks Manager.

  2. Pada halaman SQL Editor Queries, klik File atau ikon image di sebelah kanan, lalu klik OK untuk membuat file baru.

  3. Pada file baru tersebut, masukkan pernyataan SQL berikut dan klik Run.

    CREATE DATABASE `testdb`;
    CREATE TABLE `testdb`.`score_board`
    (
        `id` int(11) NOT NULL COMMENT "",
        `name` varchar(65533) NULL DEFAULT "" COMMENT "",
        `score` int(11) NOT NULL DEFAULT "0" COMMENT ""
    )
    ENGINE=OLAP
    PRIMARY KEY(`id`)
    COMMENT "OLAP"
    DISTRIBUTED BY HASH(`id`);

Langkah 4: Baca dari dan tulis ke StarRocks

Metode 1: Session SQL dan Notebook

Untuk informasi selengkapnya tentang jenis session, lihat Session Manager.

Sesi SQL

  1. Tulis data ke StarRocks menggunakan EMR Serverless Spark.

    1. Buat session SQL. Untuk informasi selengkapnya, lihat Manage SQL sessions.

      Saat membuat session, pilih versi engine yang sesuai dengan versi Spark Connector, pilih koneksi jaringan yang dibuat pada langkah sebelumnya di Network Connection, dan tambahkan parameter berikut di bagian Spark Configuration untuk memuat Spark Connector.

      spark.emr.serverless.user.defined.jars  oss://<bucketname>/path/connector.jar

      Ganti oss://<bucketname>/path/connector.jar dengan path OSS dari Spark Connector yang diunggah pada Langkah 1. Contohnya, oss://emr-oss/spark/starrocks-spark-connector-3.5_2.12-1.1.2.jar.

    2. Pada halaman Development, buat task SparkSQL. Lalu, pilih session SQL yang telah dibuat dari pojok kanan atas.

      Untuk informasi selengkapnya, lihat Mengembangkan Pekerjaan SparkSQL.

    3. Salin kode berikut ke tab SparkSQL baru, ganti nilai placeholder sesuai kebutuhan, lalu klik Run.

      CREATE TEMPORARY VIEW score_board
      USING starrocks
      OPTIONS
      (
        "starrocks.table.identifier" = "testdb.score_board",
        "starrocks.fe.http.url" = "<fe_host>:<fe_http_port>",
        "starrocks.fe.jdbc.url" = "jdbc:mysql://<fe_host>:<fe_query_port>",
        "starrocks.user" = "<user>",
        "starrocks.password" = "<password>"
      );
      INSERT INTO `score_board` VALUES (1, "starrocks", 100), (2, "spark", 100);

      Deskripsi parameter:

      • <fe_host>: Titik akhir internal atau publik dari node FE di instans EMR Serverless StarRocks Anda. Anda dapat menemukannya di halaman Instance Details pada bagian FE Details.

        • Jika Anda menggunakan titik akhir internal, pastikan kedua layanan berada di VPC yang sama.

        • Jika Anda menggunakan titik akhir publik, pastikan aturan security group mengizinkan traffic pada port yang diperlukan. Untuk informasi selengkapnya, lihat Network access and security settings.

      • <fe_http_port>: Port HTTP dari node FE di instans EMR Serverless StarRocks. Nilai default-nya adalah 8030. Anda dapat menemukannya di halaman Instance Details pada bagian FE Details.

      • <fe_query_port>: Port kueri dari node FE di instans EMR Serverless StarRocks. Nilai default-nya adalah 9030. Anda dapat menemukannya di halaman Instance Details pada bagian FE Details.

      • <user>: Username untuk instans Serverless StarRocks. Secara default, disediakan user admin dengan hak istimewa administrator. Anda juga dapat menambahkan user baru untuk koneksi melalui halaman User Management. Untuk informasi selengkapnya tentang cara menambahkan user, lihat Manage Users and Data Authorization.

      • <password>: Password yang sesuai dengan <user>.

  2. Kueri data yang telah ditulis menggunakan EMR Serverless Spark.

    Pada contoh ini, kami membuat tampilan sementara bernama test_view di task Spark SQL dan menggunakannya untuk mengkueri data dari score_board. Salin kode berikut ke tab Spark SQL baru, pilih kodenya, lalu klik Run the selected.

    CREATE TEMPORARY VIEW test_view
    USING starrocks
    OPTIONS
    (
       "starrocks.table.identifier" = "testdb.score_board",
       "starrocks.fe.http.url" = "<fe_host>:<fe_http_port>",
       "starrocks.fe.jdbc.url" = "jdbc:mysql://<fe_host>:<fe_query_port>",
       "starrocks.user" = "<user>",
       "starrocks.password" = "<password>"
    );
    SELECT * FROM test_view;

    Output

    Kueri mengembalikan dua catatan: (1, "starrocks", 100) dan (2, "spark", 100).

Notebook session

  1. Tulis data ke StarRocks menggunakan EMR Serverless Spark.

    1. Buat session Notebook. Untuk informasi selengkapnya, lihat Manage Notebook sessions.

      Saat membuat session, pilih versi engine yang sesuai dengan versi Spark Connector, pilih koneksi jaringan yang dibuat pada langkah sebelumnya di Network Connection, dan tambahkan parameter berikut di bagian Spark Configuration untuk memuat Spark Connector.

      spark.emr.serverless.user.defined.jars  oss://<bucketname>/path/connector.jar

      Ganti oss://<bucketname>/path/connector.jar dengan path OSS dari Spark Connector yang diunggah pada Langkah 1. Contohnya, oss://emr-oss/spark/starrocks-spark-connector-3.5_2.12-1.1.2.jar.

    2. Pada halaman Development, buat task Interactive Development > Notebook, lalu pilih session Notebook yang telah dibuat di pojok kanan atas.

      Untuk informasi selengkapnya, lihat Manage Notebook sessions.

    3. Salin kode berikut ke sel Python di Notebook dan klik Run.

      # Ganti placeholder dengan konfigurasi EMR Serverless StarRocks Anda.
      fe_host = "<fe_host>"
      fe_http_port = "<fe_http_port>"
      fe_query_port = "<fe_query_port>"
      user = "<user>"
      password = "<password>"
      # Buat tampilan.
      create_table_sql = f"""
      CREATE TEMPORARY VIEW score_board
      USING starrocks
      OPTIONS (
        "starrocks.table.identifier" = "testdb.score_board",
        "starrocks.fe.http.url" = "{fe_host}:{fe_http_port}",
        "starrocks.fe.jdbc.url" = "jdbc:mysql://{fe_host}:{fe_query_port}",
        "starrocks.user" = "{user}",
        "starrocks.password" = "{password}"
      )
      """
      spark.sql(create_table_sql)
      # Masukkan data.
      insert_data_sql = """
      INSERT INTO `score_board` VALUES (1, "starrocks", 100), (2, "spark", 100)
      """
      spark.sql(insert_data_sql)
      

      Deskripsi parameter:

      • <fe_host>: Titik akhir internal atau publik dari node FE di instans EMR Serverless StarRocks Anda. Anda dapat menemukannya di halaman Instance Details pada bagian FE Details.

        • Jika Anda menggunakan titik akhir internal, pastikan kedua layanan berada di VPC yang sama.

        • Jika Anda menggunakan titik akhir publik, pastikan aturan security group mengizinkan traffic pada port yang diperlukan. Untuk informasi selengkapnya, lihat Network access and security settings.

      • <fe_http_port>: Port HTTP dari node FE di instans EMR Serverless StarRocks. Nilai default-nya adalah 8030. Anda dapat menemukannya di halaman Instance Details pada bagian FE Details.

      • <fe_query_port>: Port kueri dari node FE di instans EMR Serverless StarRocks. Nilai default-nya adalah 9030. Anda dapat menemukannya di halaman Instance Details pada bagian FE Details.

      • <user>: Username untuk instans Serverless StarRocks. Secara default, disediakan user admin dengan hak istimewa administrator. Anda juga dapat menambahkan user baru untuk koneksi melalui halaman User Management. Untuk informasi selengkapnya tentang cara menambahkan user, lihat Manage Users and Data Authorization.

      • <password>: Password yang sesuai dengan <user>.

  2. Kueri data yang telah ditulis menggunakan EMR Serverless Spark.

    Pada sel Python baru, buat tampilan sementara bernama test_view untuk mengkueri tabel score_board. Salin kode berikut ke sel tersebut dan klik ikon run (image) untuk mengeksekusinya.

    # Buat tampilan.
    create_view_sql=f"""
    CREATE TEMPORARY VIEW test_view
    USING starrocks
    OPTIONS (
      "starrocks.table.identifier" = "testdb.score_board",
      "starrocks.fe.http.url" = "{fe_host}:{fe_http_port}",
      "starrocks.fe.jdbc.url" = "jdbc:mysql://{fe_host}:{fe_query_port}",
      "starrocks.user" = "{user}",
      "starrocks.password" = "{password}"
    )
    """
    spark.sql(create_view_sql)
    # Kueri data.
    query_sql="SELECT * FROM test_view"
    result_df = spark.sql(query_sql)
    result_df.show()

    Output

    +---+---------+-----+
    | id|     name|score|
    +---+---------+-----+
    |  2|    spark|  100|
    |  1|starrocks|  100|
    +---+---------+-----+

Metode 2: Pekerjaan batch Spark

  1. Buat pekerjaan batch Spark.

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

    2. Pada tab Development, klik ikon image.

    3. Pada kotak dialog Create, masukkan Name, atur tipe menjadi Application > SQL, lalu klik OK.

      Anda dapat menyesuaikan tipe sesuai kebutuhan. Topik ini menggunakan SQL sebagai contoh. Untuk informasi selengkapnya tentang tipe pekerjaan, lihat Develop an application.

  2. Baca dari dan tulis ke StarRocks menggunakan pekerjaan batch Spark.

    1. Di pojok kanan atas halaman pengembangan pekerjaan baru, pilih antrian.

      Untuk informasi selengkapnya tentang cara menambahkan antrian, lihat Manage resource queues.

    2. Pada halaman pengembangan pekerjaan baru, konfigurasikan pengaturan berikut, biarkan parameter lain tetap pada nilai default-nya, lalu klik Run.

      Parameter

      Deskripsi

      SQL File

      Contoh ini menggunakan file spark_sql_starrocks.sql, yang berisi pernyataan SQL dari session SQL. Sebelum menggunakan file tersebut, unduh, modifikasi konfigurasinya sesuai kebutuhan, lalu unggah di halaman Artifacts.

      Parameter spark_sql_starrocks.sql

      Deskripsi parameter:

      • <fe_host>: Titik akhir internal atau publik dari node FE di instans EMR Serverless StarRocks Anda. Anda dapat menemukannya di halaman Instance Details pada bagian FE Details.

        • Jika Anda menggunakan titik akhir internal, pastikan kedua layanan berada di VPC yang sama.

        • Jika Anda menggunakan titik akhir publik, pastikan aturan security group mengizinkan traffic pada port yang diperlukan. Untuk informasi selengkapnya, lihat Network access and security settings.

      • <fe_http_port>: Port HTTP dari node FE di instans EMR Serverless StarRocks. Nilai default-nya adalah 8030. Anda dapat menemukannya di halaman Instance Details pada bagian FE Details.

      • <fe_query_port>: Port kueri dari node FE di instans EMR Serverless StarRocks. Nilai default-nya adalah 9030. Anda dapat menemukannya di halaman Instance Details pada bagian FE Details.

      • <user>: Username untuk instans Serverless StarRocks. Secara default, disediakan user admin dengan hak istimewa administrator. Anda juga dapat menambahkan user baru untuk koneksi melalui halaman User Management. Untuk informasi selengkapnya tentang cara menambahkan user, lihat Manage Users and Data Authorization.

      • <password>: Password yang sesuai dengan <user>.

      Engine Version

      Pilih versi engine yang sesuai dengan versi Spark Connector.

      Normal Network Connection

      Pilih Koneksi Jaringan yang telah Anda buat pada langkah sebelumnya.

      Spark Configuration

      Tambahkan parameter berikut di bagian Spark Configuration untuk memuat Spark Connector.

      spark.emr.serverless.user.defined.jars  oss://<bucketname>/path/connector.jar

      Ganti oss://<bucketname>/path/connector.jar dengan path OSS dari Spark Connector yang diunggah pada Langkah 1. Contohnya, oss://emr-oss/spark/starrocks-spark-connector-3.5_2.12-1.1.2.jar.

  3. Lihat informasi log.

    1. Di bagian Execution Records di bawah, klik Details di kolom Actions.

    2. Klik tab Log Exploration untuk melihat informasi log pekerjaan.

      Pilih Driver Log > Stdout untuk melihat file stdout.log. Jika pekerjaan berhasil, output log berisi starrocks 100 dan spark 100. Hal ini mengonfirmasi bahwa data berhasil ditulis ke dan dibaca dari StarRocks.

Referensi

Untuk informasi selengkapnya, lihat dokumentasi resmi StarRocks: