All Products
Search
Document Center

E-MapReduce:Baca dari dan tulis ke Hologres

Last Updated:Jul 09, 2026

Hologres Spark Connector memungkinkan EMR Serverless Spark terhubung ke Hologres dengan menambahkan konfigurasi yang diperlukan. Topik ini menjelaskan cara membaca dari dan menulis ke Hologres dalam lingkungan Serverless Spark.

Limitasi

Spark connector memerlukan Hologres versi 1.3 atau lebih baru. Anda dapat memeriksa versi instans Anda di halaman Instance Details di Hologres console. Jika instans Anda menggunakan versi sebelum 1.3, upgrade instans Anda atau bergabung dengan grup DingTalk Hologres (ID: 32314975) untuk meminta upgrade.

Metode akses

Anda dapat mengakses Hologres dengan dua cara. Pilih metode yang paling sesuai dengan kebutuhan Anda:

Metode akses

Deskripsi

Skenario

Referensi

Metode 1: Konfigurasi tingkat task/session

Konfigurasikan informasi koneksi Hologres (JDBC URL, username, password, dan parameter lainnya) secara terpisah di setiap task atau session.

  • Kebutuhan akses data ad hoc

  • Task berbeda perlu mengakses instans Hologres yang berbeda

  • Diperlukan kontrol akses tingkat granular untuk setiap task

Topik ini

Metode 2: Konfigurasi terpadu melalui data catalogs (direkomendasikan)

Tambahkan katalog data Hologres melalui fitur Data Catalogs EMR Serverless Spark. Setelah katalog ditambahkan, semua job dan session di ruang kerja dapat mengakses data yang telah diotorisasi secara default.

Catatan

Hanya didukung oleh engine versi esr-4.9.0 dan lebih baru.

  • Diperlukan akses data Hologres secara sering

  • Beberapa task berbagi konfigurasi akses Hologres yang sama

  • Menyederhanakan konfigurasi task dan meningkatkan efisiensi pengembangan

Kelola data catalogs

Catatan

Jika ruang kerja Anda memerlukan akses jangka panjang dan sering ke data Hologres, kami merekomendasikan Metode 2 (data catalogs) untuk mengurangi konfigurasi berulang dan meningkatkan efisiensi pengembangan.

Prosedur

Langkah 1: Dapatkan dan unggah JAR hologres-connector-spark

Catatan

EMR Serverless Spark versi esr-4.8.0 dan lebih baru sudah menyertakan connector Hologres bawaan. Langkah ini hanya diperlukan jika Anda menggunakan versi sebelum esr-4.8.0.

  1. Untuk membaca dari dan menulis ke Hologres, Spark memerlukan file JAR connector. Anda dapat mengunduhnya dari Maven Central Repository. Topik ini menggunakan versi 1.5.6: hologres-connector-spark-3.x-1.5.6-jar-with-dependencies.jar.

  2. Unggah file JAR hologres-connector-spark yang telah diunduh ke OSS. Untuk petunjuknya, lihat Simple upload.

Langkah 2: Tambahkan koneksi jaringan

  1. Dapatkan informasi jaringan.

    Buka halaman Hologres dan navigasikan ke detail instans Hologres target Anda untuk menemukan informasi VPC dan vSwitch-nya.

  2. Tambahkan koneksi jaringan.

    Serverless Spark memerlukan koneksi jaringan ke kluster Hologres untuk mengakses layanan. Untuk informasi selengkapnya tentang koneksi jaringan, lihat Konektivitas jaringan antara EMR Serverless Spark dan VPC lainnya.

Langkah 3: Buat database dan tabel Hologres

  1. Hubungkan ke instans Hologres. Untuk detailnya, lihat Hubungkan ke instans.

  2. Pada tab SQL Editor, masukkan pernyataan SQL berikut di kueri temporary baru dan jalankan.

    -- Buat database.
    CREATE DATABASE testdb;
    -- Buat tabel.
    CREATE TABLE "public"."test" (
        "id" text  NULL,
        "name" text  NULL);
    -- Masukkan data.
    INSERT INTO public.test VALUES ('1001','jack'),('1002','tony'),('1003','mike');
    -- Kueri data.
    SELECT * FROM public.test 

    image

Langkah 4: Baca dari dan tulis ke Hologres

Contoh 1: Session SQL

Contoh ini menunjukkan cara membaca dari dan menulis ke Hologres menggunakan session SQL.

  1. Buat session SQL. Untuk detailnya, lihat Kelola Session SQL.

    Saat membuat session, pilih koneksi jaringan yang telah Anda buat pada langkah sebelumnya dari daftar koneksi jaringan. Di bagian Spark Configuration, tambahkan parameter berikut untuk memuat hologres-connector-spark.

    # Tambahkan file JAR hologres-connector (hanya diperlukan untuk versi sebelum esr-4.8.0).
    spark.emr.serverless.user.defined.jars oss://<bucket>/hologres-connector-spark-3.x-<version>.jar
    
    # Konfigurasikan katalog Hologres.
    spark.sql.catalog.hologres_external_test_db com.alibaba.hologres.spark3.HoloTableCatalog
    spark.sql.catalog.hologres_external_test_db.username ***
    spark.sql.catalog.hologres_external_test_db.password ***
    spark.sql.catalog.hologres_external_test_db.jdbcurl jdbc:postgresql://hgpostcn-cn-***-vpc-st.hologres.aliyuncs.com:80/testdb

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Contoh

    Deskripsi

    spark.emr.serverless.user.defined.jars

    oss://<bucket>/hologres-connector-spark-3.x-<version>.jar

    Menentukan path ke file JAR yang ditentukan pengguna.

    spark.sql.catalog.hologres_external_test_db

    com.alibaba.hologres.spark3.HoloTableCatalog

    Di Spark 3.x, parameter ini digunakan untuk mengonfigurasi sumber data Hologres sebagai katalog eksternal. Ini adalah nilai tetap.

    spark.sql.catalog.hologres_external_test_db.username

    LTAI******

    ID AccessKey Akun Alibaba Cloud Anda. Kami menyarankan Anda menggunakan secrets management untuk menangani informasi sensitif. Untuk detailnya, lihat Kelola informasi sensitif menggunakan secrets management.

    spark.sql.catalog.hologres_external_test_db.password

    mXYV******

    Rahasia AccessKey Akun Alibaba Cloud Anda. Kami menyarankan Anda menggunakan secrets management untuk menangani informasi sensitif. Untuk detailnya, lihat Kelola informasi sensitif menggunakan secrets management.

    spark.sql.catalog.hologres_external_test_db.jdbcurl

    jdbc:postgresql://hgpostcn-cn-***-vpc-st.hologres.aliyuncs.com:80/testdb

    URL koneksi JDBC instans Hologres.

    Anda dapat menyesuaikan bagian hologres_external_test_db dalam nama parameter.

  2. Di halaman Data Development, buat job SparkSQL dan pilih session SQL yang telah Anda buat dari pojok kanan atas.

    Untuk informasi selengkapnya, lihat Pengembangan SparkSQL.

  3. Salin kode berikut ke tab SparkSQL baru dan klik Run.

    -- Beralih ke database testdb.
    USE hologres_external_test_db;
    -- Tulis data.
    INSERT INTO `public`.test VALUES ('1004','tom');
    -- Kueri data.
    SELECT * FROM `public`.test;

    image

Contoh 2: Job streaming

Contoh PySpark ini menunjukkan cara membaca data dari Kafka dan menuliskannya ke Hologres sebagai job streaming.

Catatan

Pastikan koneksi jaringan antara Kafka dan Hologres aktif. Kami menyarankan Anda men-deploy Kafka dan Hologres di VPC dan vSwitch yang sama.

  1. Dalam contoh kode ini, ganti informasi Kafka dan tabel Hologres dengan nilai aktual Anda.

    from pyspark.sql import SparkSession
    from pyspark.sql.functions import col
    
    # Konfigurasikan informasi Kafka Anda.
    servers = "alikafka-serverless-cn-xxxxx-vpc.alikafka.aliyuncs.com:9092"  # Ganti dengan bootstrap servers Kafka Anda.
    topic = "topic-name"  # Ganti dengan topik Kafka Anda.
    
    # Buat SparkSession.
    spark = SparkSession.builder \
        .appName("test read kafka") \
        .getOrCreate()
    
    # Baca stream Kafka.
    df = spark \
        .readStream \
        .format("kafka") \
        .option("kafka.bootstrap.servers", servers) \
        .option("subscribe", topic) \
        .load()
    
    # Definisikan fungsi untuk menulis ke Hologres (dipanggil untuk setiap micro-batch).
    def write_to_hologres(batch_df, batch_id):
        print(f"Writing batch {batch_id} to Hologres...")
        batch_df.write \
            .format("hologres") \
            .mode("append") \
            .insertInto("hologres_external_test_db.public.test")  # Ganti dengan tabel Hologres Anda.
    
    # Konversi key dan value ke string dan tulis stream-nya.
    query = df.selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)") \
        .writeStream \
        .foreachBatch(write_to_hologres) \
        .outputMode("append") \
        .trigger(processingTime='30 seconds') \
        .start()
    
    # Tunggu hingga kueri streaming berhenti (ini memblokir eksekusi cell di notebook).
    query.awaitTermination()
  2. Unggah file.

    1. Di halaman Artifacts, klik Upload File.

    2. Di kotak dialog Upload File, klik area unggah untuk memilih file Python dari langkah sebelumnya, atau seret file ke area unggah.

  3. Buat dan jalankan job streaming.

    1. Di halaman Development, klik ikon image (Create).

    2. Di kotak dialog yang muncul, masukkan Name, pilih PySpark dari daftar Application (Streaming), lalu klik OK.

    3. Di tab pengembangan baru, konfigurasikan parameter berikut dan biarkan sisanya pada pengaturan default. Lalu, klik Publish.

      Parameter

      Deskripsi

      Main Python Resources

      Pilih file Python yang telah Anda unggah pada langkah sebelumnya.

      Engine Version

      Pilih versi Spark yang kompatibel. Contoh ini menggunakan esr-4.6.0.

      Network Connection

      Pilih koneksi jaringan yang telah Anda buat di Langkah 2.

      Spark Configuration

      # Tambahkan file JAR hologres-connector (hanya diperlukan untuk versi sebelum esr-4.8.0).
      spark.emr.serverless.user.defined.jars              oss://<bucket>/test_script/hologres-connector-spark-3.x-1.5.6-jar-with-dependencies.jar
      # Konfigurasikan katalog Hologres.
      spark.sql.catalog.hologres_external_test_db com.alibaba.hologres.spark3.HoloTableCatalog
      spark.sql.catalog.hologres_external_test_db.username ***
      spark.sql.catalog.hologres_external_test_db.password ***
      spark.sql.catalog.hologres_external_test_db.jdbcurl jdbc:postgresql://hgpostcn-cn-***-vpc-st.hologres.aliyuncs.com:80/testdb

      Untuk deskripsi detail parameter, lihat Contoh 1: Session SQL.

    4. Setelah Anda memublikasikan job, klik Go to O&M. Di halaman yang terbuka, klik Start.

  4. Verifikasi hasilnya.

    1. Kirim pesan ke Kafka.

      image

    2. Kueri data menggunakan Spark SQL.image

Contoh 3: Session Notebook

  1. Buat session Notebook. Untuk detailnya, lihat Kelola Session Notebook.

    Saat membuat session, pilih koneksi jaringan yang telah Anda buat pada langkah sebelumnya dari daftar koneksi jaringan. Di bagian Spark Configuration, tambahkan parameter berikut untuk memuat hologres-connector-spark.

    # Tambahkan file JAR hologres-connector (hanya diperlukan untuk versi sebelum esr-4.8.0).
    spark.emr.serverless.user.defined.jars oss://<bucket>/hologres-connector-spark-3.x-<version>.jar
  2. Di halaman Data Development, buat job Notebook dan pilih session Notebook yang telah Anda buat dari pojok kanan atas.

  3. Salin kode berikut ke tab Notebook baru dan klik image.

    import pandas as pd
    from pyspark.sql import SparkSession
    from pyspark.sql.types import StructType, StructField, StringType, IntegerType, LongType
    
    # 1. Siapkan DataFrame Pandas.
    pdf = pd.DataFrame({
        "id": ["1006"],
        "name": ["sl"]
    })
    
    # 2. Konversi ke DataFrame PySpark.
    # (Opsional: Definisikan skema secara eksplisit untuk memastikan tipe data yang benar)
    schema = StructType([
        StructField("id", StringType(), True),
        StructField("name", StringType(), True)
    ])
    
    df = spark.createDataFrame(pdf, schema=schema)
    
    # Tulis ke Hologres.
    df.write \
      .format("hologres") \
      .option("username", "LTAI******") \
      .option("password", "mXYV******") \
      .option("jdbcurl", "jdbc:postgresql://hgpostcn-cn-***-vpc-st.hologres.aliyuncs.com:80/testdb") \
      .option("table", "test") \
      .mode("append") \
      .save()
    
    # Baca data.
    readDf = spark.read\
      .format("hologres") \
      .option("username", "LTAI******") \
      .option("password", "mXYV******") \
      .option("jdbcurl", "jdbc:postgresql://hgpostcn-cn-***-vpc-st.hologres.aliyuncs.com:80/testdb") \
      .option("table", "test") \
      .load()
    
    readDf.select("id", "name").show(10)

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Contoh

    Deskripsi

    username

    LTAI******

    ID AccessKey Akun Alibaba Cloud Anda. Kami menyarankan Anda menggunakan secrets management untuk menangani informasi sensitif. Untuk detailnya, lihat Kelola informasi sensitif menggunakan secrets management.

    password

    mXYV******

    Rahasia AccessKey Akun Alibaba Cloud Anda. Kami menyarankan Anda menggunakan secrets management untuk menangani informasi sensitif. Untuk detailnya, lihat Kelola informasi sensitif menggunakan secrets management.

    jdbcurl

    jdbc:postgresql://hgpostcn-cn-***-vpc-st.hologres.aliyuncs.com:80/testdb

    URL koneksi JDBC instans Hologres.

  4. Verifikasi hasilnya.image

Perintah katalog Hologres umum

Di Serverless Spark, Anda menggunakan katalog Hologres untuk menghubungkan database Hologres ke Spark SQL sebagai external catalog. Setiap katalog terikat secara ketat ke satu database Hologres, dan akses lintas database tidak didukung (Anda tidak dapat menggunakan katalog yang sama untuk mengakses beberapa database Hologres). Struktur logis di dalam katalog konsisten dengan Hologres:

Konsep Spark

Konsep Hologres

Deskripsi

catalog

database

Misalnya, hologres_external_test_db dipetakan ke database testdb di Hologres.

namespace

schema

Misalnya, public dan test_schema. Default-nya adalah public. Anda dapat menggunakan USE untuk mengganti namespace default saat ini.

table

table

Anda harus secara eksplisit menentukan namespace.table_name (misalnya, public.test) atau menjalankan USE namespace sebelum merujuk nama tabel secara langsung.

Menggunakan katalog Hologres

Katalog Hologres di Spark dipetakan tepat ke satu database Hologres dan tidak dapat diubah setelah dibuat.

USE hologres_external_test_db;

Menampilkan semua namespace

Di Spark, namespace berkorespondensi dengan schema di Hologres. Schema default adalah public. Anda dapat menggunakan perintah USE untuk mengubah schema default untuk session.

-- Lihat semua namespace di katalog Hologres, yang berkorespondensi dengan semua schema di Hologres.
SHOW NAMESPACES;

Menampilkan tabel di namespace

  • Tampilkan semua tabel.

    SHOW TABLES;
  • Tampilkan tabel di namespace tertentu.

    USE test_schema;
    SHOW TABLES;
    
    -- Atau gunakan:
    SHOW TABLES IN test_schema;

Dokumen terkait

Untuk informasi selengkapnya tentang penggunaan Spark untuk membaca dari dan menulis ke Hologres, lihat Baca data dari dan tulis data ke Hologres menggunakan Spark.