All Products
Search
Document Center

Hologres:Tabel sink Hologres

Last Updated:Jun 21, 2026

Hologres terintegrasi secara mulus dengan Realtime Compute for Apache Flink yang berjalan di Blink dalam mode eksklusif. Anda dapat menggunakan konektor untuk menulis aliran data ke tabel sink Hologres dan langsung mengkueri data tersebut. Topik ini menjelaskan cara menulis data ke tabel sink Hologres dari pekerjaan yang berjalan di Blink dalam mode eksklusif.

Batasan

  • Versi Blink yang berbeda dalam mode eksklusif menggunakan sintaks pengembangan yang berbeda. Sebelum memulai, identifikasi versi Blink dalam mode eksklusif yang Anda gunakan dan gunakan contoh yang sesuai.

  • Pastikan penerapan Realtime Compute for Apache Flink dan instans Hologres Anda berada di wilayah yang sama untuk menghindari kegagalan koneksi.

  • Versi Blink dalam mode eksklusif sebelum 3.6 tidak memiliki konektor Hologres bawaan. Untuk menulis data ke Hologres secara real-time, Anda harus mereferensikan file JAR. Untuk bantuan, lihat Kesalahan umum selama persiapan peningkatan atau hubungi kami dengan bergabung ke grup DingTalk Hologres. Untuk informasi lebih lanjut, lihat Bagaimana cara mendapatkan dukungan online lebih lanjut?.

    Catatan

    Kami menyarankan menaikkan versi Blink dalam mode eksklusif ke versi 3.6 atau yang lebih baru untuk menjalankan pekerjaan Anda.

  • Blink mode eksklusif 3.7 mendukung pembuatan otomatis tabel partisi Hologres, tetapi Anda harus mengonfigurasi createparttable='true' dalam pekerjaan. Pertimbangan saat menggunakan tabel partisi adalah sebagai berikut:

    • Hologres saat ini hanya mendukung partisi list.

    • Saat membuat tabel partisi, Anda harus secara eksplisit menentukan kolom kunci partisi. Saat ini, tipe data yang didukung untuk kolom kunci partisi hanya text dan int4, dan nilainya tidak boleh mengandung tanda hubung (-), misalnya, 2020-09-12.

    • Jika kunci primer didefinisikan untuk tabel partisi, kolom kunci partisi harus menjadi bagian dari kunci primer tersebut.

    • Saat membuat tabel partisi anak, nilai kolom kunci partisinya harus berupa nilai tetap.

    • Nilai kolom kunci partisi untuk data yang ditulis ke tabel partisi anak harus persis sesuai dengan nilai yang ditentukan saat tabel anak dibuat. Jika tidak, akan terjadi error.

    • Fitur partisi DEFAULT saat ini belum didukung.

  • Jika tabel Hologres tujuan memiliki kunci primer, semantik penulisan real-time default tidak memperbarui catatan berdasarkan kunci tersebut. Jika nanti Anda mengimpor data dengan kunci primer duplikat, data baru akan dibuang.

  • Hologres menulis data secara asinkron. Anda harus menambahkan konfigurasi blink.checkpoint.fail_on_checkpoint_error=true ke pekerjaan Anda untuk memastikan failover dipicu jika pekerjaan mengalami exception. Parameter ini tidak diperlukan untuk Blink 3.7.6 atau yang lebih baru.

Sintaks DDL

Pernyataan DDL berikut membuat tabel sink Hologres.

create table Hologres_sink(
  name varchar,
  age BIGINT,
  birthday BIGINT
) with (
  type='hologres',
  dbname='<yourDbname>', -- Nama database Hologres.
  tablename='<yourTablename>', -- Nama tabel Hologres yang menerima data.
  username='<yourUsername>', -- ID AccessKey Akun Alibaba Cloud Anda.
  password='<yourPassword>', -- Rahasia AccessKey Akun Alibaba Cloud Anda.
  endpoint='<yourEndpoint>'); -- Titik akhir VPC instans Hologres Anda.

Parameter WITH

Parameter

Deskripsi

Contoh

type

Jenis tabel sink. Tetapkan nilai ini ke hologres.

hologres

endpoint

Titik akhir VPC instans Hologres.

Login ke Konsol Hologres dan temukan titik akhir di bagian Network Information pada halaman detail instans. Titik akhir harus mencakup nomor port dan mengikuti format ip:port.

demo-cn-hangzhou-vpc.hologres.aliyuncs.com:80

username

ID AccessKey

Anda dapat memperoleh ID AccessKey Anda di halaman AccessKey Management.

xxxxm3FMWaxxxx

password

Rahasia AccessKey

Anda dapat memperoleh rahasia AccessKey Anda di halaman AccessKey Management.

xxxxm355fffaxxxx

dbname

Nama database Hologres.

Holodb

tablename

Nama tabel di database Hologres.

blink_test

arraydelimiter

Tabel sink Hologres menggunakan delimiter ini untuk memisahkan bidang STRING menjadi array sebelum mengimpor array ke Hologres.

Nilai default-nya adalah \u0002.

\u0002

mutatetype

Mode penulisan data. Untuk informasi lebih lanjut, lihat Tabel sink Hologres.

Nilai default-nya adalah insertorignore.

insertorignore

ignoredelete

Menentukan apakah pesan retraction diabaikan atau tidak.

  • true: Mengabaikan pesan retraction.

  • false: Tidak mengabaikan pesan retraction.

Catatan

Parameter ini hanya berlaku untuk pekerjaan streaming.

Nilai default-nya adalah false.

Operasi GROUP BY Flink biasanya menghasilkan pesan retraction. Saat konektor Hologres menerima pesan ini, pesan tersebut menjadi permintaan DELETE.

false

partitionrouter

Menentukan apakah data ditulis ke tabel partisi.

  • true: Menulis ke tabel partisi.

  • false: Tidak menulis ke tabel partisi.

Nilai default-nya adalah false.

false

createparttable

Jika menulis ke tabel partisi, parameter ini menentukan apakah tabel partisi anak dibuat secara otomatis berdasarkan nilai partisi. Fitur ini didukung di Blink dalam mode eksklusif versi 3.7 dan yang lebih baru.

Nilai default-nya adalah false.

Penting

Gunakan fitur ini dengan hati-hati. Pastikan nilai partisi tidak mengandung data kotor, yang dapat menyebabkan pembuatan tabel partisi yang salah.

false

Catatan

Parameter arraydelimiter, mutatetype, ignoredelete, partitionrouter, dan createparttable tidak termasuk dalam contoh pernyataan DDL. Jika Anda perlu menggunakan parameter ini dalam aplikasi Anda, tambahkan sesuai dengan deskripsi dalam tabel ini.

Menulis ke tabel sink Hologres standar

  1. Buat tabel di Hologres.

    Buat tabel di Hologres untuk menerima data. Berikut adalah contoh pernyataan SQL:

     create table blink_test (a int, b text, c text, d float8, e bigint);
  2. Buat pekerjaan Realtime Compute for Apache Flink.

    1. Login ke Realtime Compute for Apache Flink console.

    2. Buat pekerjaan.

      • Blink dalam mode eksklusif versi 3.6 dan yang lebih baru mencakup dukungan bawaan untuk sumber data Hologres. Anda dapat langsung menggunakan sumber data ini. Berikut adalah contoh pernyataan SQL:

        create table randomSource (a int, b VARCHAR, c VARCHAR, d DOUBLE, e BIGINT) with (type = 'random');
        create table test (
          a int,
          b VARCHAR,
          c VARCHAR,
          PRIMARY KEY (a)
        ) with (
          type = 'hologres',
          `endpoint` = '$ip:$port', -- Titik akhir VPC dan nomor port instans Hologres Anda.
          `username` = 'ID AccessKey Akun Alibaba Cloud Anda',
          `password` = 'Rahasia AccessKey Akun Alibaba Cloud Anda',
          `dbname` = 'Nama database Hologres',
          `tablename` = 'blink_test'-- Nama tabel Hologres yang menerima data.
        );
        insert
          into test
        select
          a,b,c
        from
          randomSource;
  3. Publikasikan pekerjaan.

    1. Setelah membuat pekerjaan, klik Syntax Check. Status Successful menunjukkan bahwa sintaks sudah benar.

    2. Klik Save untuk menyimpan pekerjaan.

    3. Klik Publish untuk menerapkan pekerjaan ke lingkungan produksi. Konfigurasikan pengaturan penerapan sesuai kebutuhan bisnis Anda. Klik Publish New Version untuk memulai proses penerapan. Pada langkah Initial Resources, pilih metode alokasi sumber daya: Auto-tuning based on last run, System allocation, atau Manual resource configuration. Setelah memilih, klik Next. Anda juga dapat mengklik Skip Data Check untuk langsung menuju langkah konfigurasi sumber daya.

  4. Jalankan pekerjaan.

    Setelah mempublikasikan pekerjaan ke lingkungan produksi, Anda harus menjalankannya secara manual.

    Pada bilah navigasi atas halaman Development Platform, klik Administration di sebelah kanan. Pada halaman Administration, pilih pekerjaan yang diinginkan dan klik Start di pojok kanan atas.

  5. Kueri data di Hologres secara real-time.

    Kueri tabel tujuan di Hologres untuk melihat data yang telah ditulis secara real-time. Berikut adalah contoh kueri:

    select * from blink_test;

Gabung dan perbarui tabel lebar

Bagian ini menjelaskan kasus penggunaan umum: menulis data dari beberapa aliran ke satu tabel lebar Hologres.

Asumsikan Anda memiliki tabel lebar Hologres bernama WIDE_TABLE dengan kolom A, B, C, D, dan E, di mana kolom A adalah kunci primer. Di Flink, satu aliran berisi data untuk kolom A, B, dan C, sedangkan aliran lain berisi data untuk kolom A, D, dan E.

  1. Gunakan Flink SQL untuk mendeklarasikan dua tabel sink Hologres. Deklarasikan kolom A, B, dan C untuk satu tabel, serta kolom A, D, dan E untuk tabel lainnya. Petakan kedua tabel tersebut ke tabel WIDE_TABLE di Hologres.

  2. Tetapkan parameter mutatetype ke insertorupdate untuk kedua tabel sink.

  3. Tetapkan parameter ignoredelete ke true untuk kedua tabel sink. Hal ini mencegah pesan retraction menghasilkan permintaan DELETE.

  4. Masukkan data dari setiap aliran ke tabel sink yang sesuai.

Skenario ini memiliki batasan berikut:

  1. Tabel lebar harus memiliki kunci primer.

  2. Setiap aliran harus mencakup semua kolom kunci primer.

  3. Menggabungkan data ke tabel lebar berorientasi kolom dengan RPS tinggi dapat menyebabkan penggunaan CPU tinggi. Kami menyarankan menonaktifkan Dictionary encoding untuk kolom-kolom dalam tabel tersebut.

Menulis ke tabel sink Hologres partisi

Hologres memungkinkan Anda memanggil API HoloHub untuk menulis data langsung ke tabel partisi induk. Data tersebut kemudian secara otomatis diarahkan ke tabel partisi anak yang sesuai. Untuk informasi lebih lanjut, lihat HoloHub API.

Batasan berikut berlaku:

  • Hologres saat ini hanya mendukung partisi list.

  • Saat membuat tabel partisi, Anda harus secara eksplisit menentukan kolom kunci partisi. Tipe data kolom kunci partisi hanya dapat berupa text atau int4.

  • Jika kunci primer didefinisikan, kolom kunci partisi harus menjadi bagian dari kunci primer tersebut.

  • Saat membuat tabel partisi anak, nilai kolom kunci partisinya harus berupa nilai tetap.

  • Nilai kolom kunci partisi untuk data yang ditulis ke tabel partisi anak harus persis sesuai dengan nilai yang ditentukan saat tabel anak dibuat. Jika tidak, akan terjadi error.

  • Hologres saat ini tidak mendukung partisi default.

  1. Buat tabel partisi di Hologres.

    Buat tabel partisi di Hologres untuk menerima data dan buat tabel partisi anak yang sesuai. Berikut adalah contoh pernyataan SQL:

    -- Buat tabel induk test_message dan tabel partisi anaknya.
    drop table if exists test_message;
    begin;
    create table test_message (
     "bizdate" text NOT NULL,
     "tag" text NOT NULL,
     "id" int4 NOT NULL,
     "title" text NOT NULL,
     "body" text,
    PRIMARY KEY (bizdate,tag,id)
    )
    PARTITION BY LIST (bizdate);
    commit;
    Catatan
    • Saat menjalankan perintah, ganti parameter ${bizdate} dengan nilai aktual.

    • Hanya versi 3.7 atau yang lebih baru dari Blink dalam mode eksklusif yang mendukung pembuatan partisi otomatis. Jika Anda menggunakan versi sebelumnya, Anda harus membuat tabel partisi anak di Hologres terlebih dahulu. Jika tidak, impor data akan gagal.

  2. Buat pekerjaan di Blink dalam mode eksklusif.

    Berikut adalah contoh pernyataan untuk membuat pekerjaan di Blink dalam mode eksklusif.

    Catatan

    Contoh berikut berlaku untuk Blink mode eksklusif 3.7 dan yang lebih baru. Jika Anda menggunakan versi Blink mode eksklusif sebelum 3.7, naikkan versi ke 3.7 atau yang lebih baru, atau hapus konfigurasi `createparttable` = 'true'.

    create table test_message_src(
      tag VARCHAR,
      id INTEGER,
      title VARCHAR,
      body VARCHAR
    ) with (
      type = 'random',
      `interval` = '10',
      `count` = '100'
    );
    create table test_message_sink (
      bizdate VARCHAR,
      tag VARCHAR,
      id INTEGER,
      title VARCHAR,
      body VARCHAR
    ) with (
      type = 'hologres',
      `endpoint` = '$ip:$port', -- Titik akhir VPC instans Hologres Anda.
      `username` ='<AccessID>', -- ID AccessKey Akun Alibaba Cloud Anda.
      `password` = '<AccessKey>', -- Rahasia AccessKey Akun Alibaba Cloud Anda.
      `dbname` = '<DBname>', -- Nama database Hologres.
      `tablename` = '<Tablename>', -- Nama tabel di database Hologres Anda.
      `partitionrouter` = 'true', -- Menulis data ke tabel partisi di Hologres.
      `createparttable` = 'true' -- Membuat tabel partisi anak secara otomatis di Hologres.
    );
    insert into test_message_sink select "20200327",* from test_message_src;
    insert into test_message_sink select "20200328",* from test_message_src;
  3. Publikasikan dan jalankan pekerjaan.

    Untuk informasi lebih lanjut, lihat langkah Publish the job dan Start the job di bagian Write data to a standard Hologres sink table.

  4. Kueri data di Hologres secara real-time.

    Kueri tabel tujuan di Hologres untuk melihat data yang telah ditulis secara real-time. Berikut adalah contoh kueri:

    select * from test_message;
    select * from test_message where bizdate = '20200327';

Pemetaan tipe data

Lihat Ringkasan tipe data untuk pemetaan tipe data antara Blink dalam mode eksklusif dan Hologres.