全部产品
Search
文档中心

Hologres:FAQ tentang Masalah Blink dan Flink

更新时间:Nov 10, 2025

Topik ini menjawab beberapa pertanyaan umum terkait Blink dan Flink saat menggunakan Hologres.

Informasi latar belakang

  • Kinerja Hologres

    • Kinerja Penulisan

      • Tabel berorientasi kolom: InsertOrIgnore > InsertOrReplace > InsertOrUpdate

      • Tabel berorientasi baris: InsertOrReplace = InsertOrUpdate > InsertOrIgnore

      Parameter

      Deskripsi

      InsertOrIgnore

      Membuang data yang ingin Anda tulis jika kunci utama yang dimasukkan memiliki nilai yang sama dengan kunci utama di tabel hasil.

      InsertOrReplace

      Memperbarui tabel berdasarkan kunci utama yang dimasukkan jika kunci utama yang dimasukkan memiliki nilai yang sama dengan kunci utama di tabel hasil. Jika data yang ditulis tidak mencakup semua kolom, nilai null dimasukkan ke dalam kolom yang tidak tertimpa.

      InsertOrUpdate

      Memperbarui tabel berdasarkan kunci utama yang dimasukkan jika kunci utama yang dimasukkan memiliki nilai yang sama dengan kunci utama di tabel hasil. Jika data yang ditulis tidak mencakup semua kolom, kolom yang tidak tertimpa tidak diperbarui.

    • Kinerja Kueri Titik

      Penyimpanan berorientasi baris = Penyimpanan hibrida baris-kolom > Penyimpanan berorientasi kolom

  • Dukungan untuk Jenis Layanan Blink, Realtime Compute for Apache Flink (VVP), dan Apache Flink

    Jenis Layanan

    Penyimpanan Data

    Deskripsi

    Tabel Sumber

    Tabel Hasil

    Tabel Dimensi

    Pencatatan Biner

    Katalog Hologres

    Flink yang sepenuhnya dikelola

    Penyimpanan berorientasi baris dan penyimpanan berorientasi kolom didukung.

    Penyimpanan berorientasi baris dan penyimpanan berorientasi kolom didukung.

    Disarankan menggunakan penyimpanan berorientasi baris.

    Didukung.

    Didukung.

    Tidak ada.

    Blink dalam mode eksklusif

    Penyimpanan berorientasi baris dan penyimpanan berorientasi kolom didukung.

    Penyimpanan berorientasi baris dan penyimpanan berorientasi kolom didukung.

    Disarankan menggunakan penyimpanan berorientasi baris.

    Hologres V0.8 hanya mendukung penyimpanan berorientasi baris. Hologres V0.9 dan versi lebih baru mendukung penyimpanan berorientasi baris dan penyimpanan berorientasi kolom. Disarankan menggunakan penyimpanan berorientasi baris.

    Tidak didukung.

    Blink dalam mode eksklusif akan dihentikan. Kami menyarankan Anda menggunakan Flink yang sepenuhnya dikelola.

    Apache Flink V1.10

    Penyimpanan berorientasi baris dan penyimpanan berorientasi kolom didukung.

    Penyimpanan berorientasi baris dan penyimpanan berorientasi kolom didukung.

    Tidak ada.

    Tidak didukung.

    Tidak didukung.

    Tidak ada.

    Apache Flink V1.11 dan lebih baru

    Penyimpanan berorientasi baris dan penyimpanan berorientasi kolom didukung.

    Penyimpanan berorientasi baris dan penyimpanan berorientasi kolom didukung.

    Disarankan menggunakan penyimpanan berorientasi baris.

    Tidak didukung.

    Tidak didukung.

    Kode Hologres dapat diakses secara publik di Apache Flink V1.11 dan lebih baru. Untuk informasi lebih lanjut, lihat alibabacloud-hologres-connectors.

  • Contoh pernyataan SQL untuk memetakan tabel Blink atau Flink ke tabel Hologres:

    create table holo_source(
    'hg_binlog_lsn' BIGINT HEADER,
    'hg_binlog_event_type' BIGINT HEADER,
    'hg_binlog_timestamp_us' BIGINT HEADER,
    A int,
    B int,
    C timestamp )
    with (
    type = 'hologres',
    'endpoint' = 'xxx.hologres.aliyuncs.com:80',   -- Titik akhir dari instance Hologres. 
    'userName' = '',                               -- ID AccessKey dari akun Alibaba Cloud Anda. 
    'password' = '',                               -- Rahasia AccessKey dari akun Alibaba Cloud Anda. 
    'dbName' = 'binlog',                           -- Nama database di instance Hologres. 
    'tableName' ='test'                            -- Nama tabel di instance Hologres. 
    'binlog' = 'true',
    );

    Tabel SQL Blink, Flink (VVP), atau Flink dibuat di Flink dan dipetakan ke tabel fisik di Hologres berdasarkan pengaturan parameter. Tabel SQL Blink, Flink (VVP), atau Flink tidak dapat dipetakan ke tabel asing di Hologres.

Memecahkan masalah lambatnya penulisan waktu nyata

  1. Verifikasi konfigurasi terkait penulisan.

    Verifikasi konfigurasi berikut:

    • Mode penyimpanan tabel tujuan, termasuk penyimpanan berorientasi baris, penyimpanan berorientasi kolom, dan penyimpanan hibrida baris-kolom.

    • Mode insert, seperti InsertOrIgnore, InsertOrUpdate, dan InsertOrReplace.

    • Grup tabel dan jumlah shard dari tabel tujuan.

  2. Periksa metrik latensi penulisan waktu nyata.

    Jika latensi penulisan rata-rata mencapai 100 milidetik atau beberapa detik, server backend mencapai batas kinerja penulisan. Dalam hal ini, masalah berikut mungkin terjadi:

    • Jika tabel berorientasi kolom menggunakan mode InsertOrUpdate dan operasi penulisan melibatkan sejumlah besar lalu lintas, beban CPU pada instance dan latensi penulisan tinggi.

      Solusi: Gunakan tabel berorientasi baris, atau gunakan tabel penyimpanan hibrida baris-kolom jika versi instance Hologres Anda adalah V1.1 dan lebih baru.

    • Beban CPU instance yang dipantau oleh CloudMonitor mendekati 100% sementara tabel berorientasi kolom tidak diperbarui. Masalah ini mungkin terjadi karena permintaan per detik (QPS) yang tinggi atau sejumlah besar data yang ditulis.

      Solusi: Tingkatkan kapasitas instance.

    • Konfirmasikan apakah perintah Insert into select from secara terus-menerus memicu penulisan bulk load untuk tabel. Penulisan bulk load menghalangi penulisan real-time.

      Solusi: Ubah penulisan batch menjadi penulisan waktu nyata, atau lakukan penulisan batch selama jam-jam sepi.

  3. Periksa apakah ada skew data.

    Eksekusi pernyataan SQL berikut untuk memeriksa apakah ada skew data:

    SELECT hg_shard_id, count(1) FROM t1 GROUP BY hg_shard_id ORDER BY hg_shard_id;

    Solusi: Jika skew data ada, ubah kunci distribusi untuk menyeimbangkan distribusi data.

  4. Periksa apakah ada beban kerja berat di kluster backend.

    Jika tidak ada masalah yang diidentifikasi setelah Anda melakukan pemeriksaan sebelumnya, penurunan mendadak dalam kinerja penulisan biasanya disebabkan oleh beban kerja berat di kluster backend. Dalam hal ini, hubungi dukungan teknis. Untuk informasi lebih lanjut, lihat Dapatkan dukungan online untuk Hologres.

  5. Periksa apakah ada tekanan balik di Blink atau Flink.

    Jika tidak ada masalah yang diidentifikasi setelah Anda melakukan pemeriksaan sebelumnya pada Hologres, penulisan waktu nyata yang lambat mungkin disebabkan oleh operasi lambat Blink atau Flink. Dalam hal ini, Anda harus memeriksa tekanan balik pada node sink. Jika hanya satu node sink yang digunakan, Anda tidak dapat memeriksa apakah tekanan balik ada. Anda harus memeriksa komponen node sink. Untuk informasi lebih lanjut, hubungi dukungan teknis Flink.

Memecahkan masalah dengan data yang ditulis

Masalah dengan data yang ditulis biasanya disebabkan oleh data yang tidak berurutan. Misalnya, jika data yang menggunakan kunci utama yang sama didistribusikan di tugas Flink yang berbeda, data tersebut tidak dapat ditulis dalam urutan aslinya. Anda harus memeriksa logika SQL Flink dan memastikan bahwa data yang ditulis di-shuffle berdasarkan kunci utama tabel tujuan Hologres.

Memecahkan masalah kueri di tabel dimensi

  • Operasi JOIN untuk tabel dimensi dan dua aliran data

    Saat membaca data dari Hologres, pastikan bahwa penggabungan tabel dimensi digunakan dengan benar. Hindari salah mengartikannya sebagai penggabungan dua aliran. Contoh berikut menunjukkan cara menggunakan Hologres sebagai tabel dimensi. Jika kata kunci proctime AS PROCTIME() dan hologres_dim FOR SYSTEM_TIME AS tidak ada, operasi tersebut menjadi penggabungan dua aliran.

    CREATE TEMPORARY TABLE datagen_source (
       a INT,
       b BIGINT,
       c STRING,
       proctime AS PROCTIME()
    ) with (
       'connector' = 'datagen'
    );
    
    CREATE TEMPORARY TABLE hologres_dim (
       a INT, 
       b VARCHAR, 
       c VARCHAR
    ) with (
       'connector' = 'hologres',
       ...
    );
    
    CREATE TEMPORARY TABLE blackhole_sink (
       a INT,
       b STRING
    ) with (
       'connector' = 'blackhole'
    );
    
    insert into blackhole_sink select T.a,H.b
    FROM datagen_source AS T JOIN hologres_dim FOR SYSTEM_TIME AS OF T.proctime AS H ON T.a = H.a;
  • Kueri di Tabel Dimensi

    1. Periksa mode penyimpanan tabel dimensi.

      Periksa apakah mode penyimpanan tabel dimensi adalah penyimpanan berorientasi baris, penyimpanan berorientasi kolom, atau penyimpanan hibrida baris-kolom.

    2. Periksa apakah latensi kueri di tabel dimensi tinggi.

      Tekanan balik pada node join Flink atau Blink adalah masalah umum dalam penggunaan tabel dimensi dan menyebabkan throughput rendah.

      1. Periksa mode join tabel dimensi Flink.

        Operasi JOIN konektor tabel dimensi Hologres Flink dapat dilakukan dalam mode sinkron atau asinkron. Mode asinkron lebih baik daripada mode sinkron. Kode berikut memberikan contoh cara mengaktifkan mode asinkron:

        CREATE TABLE hologres_dim(
         id INT,
         len INT,
         content VARCHAR
        ) with (
          'connector'='hologres',
          'dbname'='<yourDbname>',  -- Nama database Hologres. 
          'tablename'='<yourTablename>', --Nama tabel Hologres tempat data ditulis. 
          'username'='<yourUsername>', --ID AccessKey akun Alibaba Cloud Anda. 
          'password'='<yourPassword>', --Rahasia AccessKey akun Alibaba Cloud Anda. 
          'endpoint'='<yourEndpoint>'  -- Titik akhir Virtual Private Cloud (VPC) dari instance Hologres. 
          'async' = 'true'-- Aktifkan mode asinkron.
        );
      2. Periksa latensi kueri di backend.

        Periksa metrik latensi penulisan waktu nyata.

        • Periksa apakah tabel dimensi adalah tabel berorientasi kolom. Tabel dimensi berorientasi kolom memerlukan overhead tinggi dalam skenario dengan QPS tinggi.

        • Jika tabel dimensi adalah tabel berorientasi baris, latensi tinggi biasanya disebabkan oleh beban tinggi pada instance. Dalam hal ini, Anda harus meningkatkan kapasitas instance.

    3. Periksa apakah kunci join adalah kunci utama.

      Konektor Hologres VVR 4.x (Flink 1.13) dan yang lebih baru memungkinkan kueri menggunakan Holo Client berdasarkan kolom selain kolom kunci primer. Dalam hal ini, kinerja kueri biasanya rendah dan beban instans tinggi. Selain itu, tabel tidak dioptimalkan saat dibuat. Anda harus mengoptimalkan struktur tabel. Praktik umum adalah mengonfigurasi kunci gabungan sebagai kunci distribusi, yang memungkinkan pemangkasan shard.

    4. Periksa tekanan balik pada node Blink.

      Jika tidak ada masalah yang diidentifikasi setelah Anda melakukan pemeriksaan sebelumnya pada Hologres, kueri lambat mungkin disebabkan oleh operasi lambat Blink. Dalam hal ini, Anda harus memeriksa tekanan balik pada node sink. Jika hanya satu node sink yang digunakan, Anda tidak dapat memeriksa apakah tekanan balik ada. Anda harus memeriksa komponen node sink. Anda dapat menggunakan metode yang sama untuk memeriksa tekanan balik pada node join. Untuk informasi lebih lanjut, hubungi dukungan teknis Flink.

Catatan penggunaan koneksi

Secara default, konektor Hologres menggunakan mode terkait Java Database Connectivity (JDBC).

  • Mode JDBC_FIXED didukung. Mode ini tidak menempati koneksi, dan konsumsi log biner dalam mode ini tidak terbatas pada batas maksimum jumlah walsender. Untuk informasi lebih lanjut, lihat Konektor Hologres.

  • Mulai dari mesin Flink VVR-8.0.5-Flink-1.17, penggunaan ulang koneksi diaktifkan secara default dengan 'connectionPoolName' = 'default'. Ini tidak memengaruhi sebagian besar pekerjaan. Namun, jika satu pekerjaan memiliki banyak tabel, performa mungkin menurun setelah peningkatan. Dalam kasus ini, Anda dapat mengonfigurasi parameter connectionPoolName untuk tabel hot spot guna mengoptimalkan performa.

  • Dalam mode JDBC, sejumlah koneksi digunakan. Tabel berikut menjelaskan jumlah koneksi default yang digunakan oleh berbagai jenis tabel.

    Jenis tabel

    Jumlah koneksi default untuk setiap pod dalam pekerjaan Flink

    Tabel sumber log biner

    0

    Tabel sumber untuk pembacaan batch

    1

    Tabel dimensi

    3 (Anda dapat menyesuaikan ini menggunakan parameter connectionSize)

    Tabel hasil

    3 (Anda dapat menyesuaikan ini menggunakan parameter connectionSize)

    • Perhitungan Jumlah Koneksi

      • Pengaturan Default

        Secara default, jumlah maksimum koneksi yang dapat digunakan oleh sebuah pekerjaan dihitung menggunakan rumus berikut:

        Koneksi maksimum = (Jumlah tabel sumber batch × 1 + Jumlah tabel dimensi × connectionSize + Jumlah tabel sink × connectionSize) × Paralelisme pekerjaan.

        Sebagai contoh, sebuah pekerjaan memiliki satu tabel sumber penuh dan inkremental, dua tabel dimensi, dan tiga tabel sink. Semua tabel menggunakan nilai parameter default connectionSize. Paralelisme pekerjaan diatur ke 5. Jumlah akhir koneksi yang digunakan adalah (1 × 1 + 2 × 3 + 3 × 3) × 5 = 80.

      • Penggunaan Ulang Koneksi

        Realtime Compute for Apache Flink 1.13-vvr-4.1.12 dan versi selanjutnya mendukung penggunaan ulang koneksi. Dalam instance konkuren yang sama dari sebuah pekerjaan, tabel dimensi dan tabel sink dengan connectionPoolName yang sama menggunakan kolam koneksi yang sama. Dalam contoh sebelumnya, jika dua tabel dimensi dan tiga tabel sink dikonfigurasikan dengan connectionPoolName yang sama, dan connectionSize ditingkatkan menjadi 5, jumlah akhir koneksi yang digunakan adalah (1 × 1 + 5) × 5 = 30.

        Catatan

        Mode penggunaan ulang koneksi berlaku untuk sebagian besar skenario. Namun, dalam skenario dengan banyak tabel dimensi atau dalam skenario tanpa mengaktifkan mode asinkron dan caching, query titik sinkron sering dilakukan. Dengan cara ini, penggunaan ulang koneksi multi-tabel dapat menyebabkan query lambat. Dalam hal ini, Anda dapat mengonfigurasi penggunaan ulang koneksi hanya untuk tabel hasil.

      • Skenario Lain

        • Saat pekerjaan dimulai, tiga hingga enam koneksi perlu dibuat untuk memverifikasi metadata tabel. Setelah pekerjaan berjalan sesuai harapan, koneksi dilepaskan.

        • Flink yang sepenuhnya dikelola mendukung fitur seperti katalog Hologres, pernyataan CREATE TABLE AS (CTAS), dan pernyataan CREATE DATABASE AS (CDAS). Saat Anda menggunakan fitur-fitur ini, koneksi digunakan. Secara default, pekerjaan yang menggunakan katalog Hologres mengonsumsi tiga koneksi tambahan untuk operasi bahasa definisi data (DDL) seperti membuat tabel.

    • Diagnosis Koneksi

      Jika sebuah pekerjaan memiliki banyak tabel dan tingkat paralelisme tinggi, banyak koneksi digunakan. Jumlah koneksi yang digunakan di Hologres mungkin mencapai batas atas. Anda dapat menggunakan metode berikut untuk mempelajari dan mendiagnosis koneksi saat ini:

      • Anda dapat menggunakan perintah berikut di HoloWeb untuk melihat query aktif saat ini di tabel pg_stat_activity. Untuk informasi lebih lanjut, lihat Informasi Tampilan pg_stat_activity. Query tempat bidang application_name adalah ververica-connector-hologres mewakili koneksi baca/tulis dari Realtime Compute for Apache Flink.

        SELECT application_name, COUNT (1) AS COUNT
        FROM
          pg_stat_activity
        WHERE
          backend_type = 'client backend'
          AND application_name != 'hologres'
        GROUP BY application_name;
      • Terkadang, paralelisme pekerjaan diatur terlalu tinggi. Pada halaman Informasi Pemantauan untuk instans di konsol Hologres Instance List, Anda dapat melihat bahwa jumlah koneksi tinggi saat startup dan kemudian menurun. Hal ini terjadi karena banyak koneksi menjadi idle dan ditutup. Ini menunjukkan bahwa pekerjaan tidak memerlukan paralelisme setinggi itu atau sebanyak itu koneksi. Anda harus merencanakan jumlah koneksi untuk tugas tersebut, mengurangi paralelisme atau nilai parameter connectionSize, atau menggunakan mode penggunaan ulang koneksi.

      • Atur ulang paralelisme node Hologres. Secara default, paralelisme semua operator dalam pekerjaan Flink sama. Dalam skenario tertentu, operator yang berisi logika komputasi kompleks memerlukan paralelisme lebih tinggi. Namun, paralelisme tinggi mungkin berlebihan untuk tabel hasil Hologres dan dapat memakan banyak koneksi. Dalam hal ini, Anda dapat menggunakan mode ahli dan menentukan paralelisme kecil yang sesuai untuk operator tulis berdasarkan konfigurasi sumber daya pekerjaan Anda. Ini membantu mengurangi jumlah total koneksi.

Kesalahan umum

Kesalahan: ERPC TIMEOUT atau ERPC CONNECTION CLOSED

  • Gejala: Kesalahan com.alibaba.blink.store.core.rpc.RpcException: request xx UpsertRecordBatchRequest failed on final try 4, maxAttempts=4, errorCode=3, msg=ERPC_ERROR_TIMEOUT dilaporkan.

  • Penyebab: Operasi penulisan gagal karena tekanan berlebih atau kluster yang sibuk. Periksa apakah Beban CPU dari instans Hologres mencapai batas maksimum. Kesalahan CONNECTION CLOSED dapat terjadi karena beban berlebih menyebabkan node backend crash, mengakibatkan kehabisan memori (OOM) atau coredump.

  • Solusi: Coba lagi operasi penulisan. Jika kesalahan tetap ada, hubungi dukungan teknis Hologres.

Kesalahan: BackPresure Exceed Reject Limit

  • Penyebab: Beban kerja penulisan di backend berat dan sistem tidak dapat membersihkan data di tabel memori secara tepat waktu. Akibatnya, terjadi kegagalan penulisan.

  • Solusi: Abaikan kesalahan jika pesan kesalahan dilaporkan hanya sesekali, atau tambahkan konfigurasi rpcRetries = '100' untuk sink untuk meningkatkan jumlah percobaan ulang penulisan. Jika kesalahan tetap ada, hubungi dukungan teknis Hologres.

Kesalahan: Nama tabel yang diminta xxx tidak cocok dengan versi tabel xxx dari server/org.postgresql.util.PSQLException: Terjadi kesalahan I/O saat mengirim ke backend.Disebabkan oleh: java.net.SocketTimeoutException: Read timed out

  • Penyebab: Pernyataan ALTER TABLE dijalankan. Akibatnya, versi skema tabel Blink lebih awal daripada yang ada di server dan jumlah maksimum percobaan ulang tercapai.

  • Solusi: Abaikan kesalahan jika hanya terjadi sesekali. Jika kesalahan tetap ada, hubungi dukungan teknis Hologres.

Kesalahan: Gagal menanyakan metadata tabel untuk tabel

  • Penyebab: Tabel asing dibaca. Namun, konektor Hologres tidak mendukung operasi baca dan tulis pada tabel asing. Selain itu, kesalahan ini disebabkan oleh masalah terkait metadata instance Hologres.

  • Solusi: Hubungi dukungan teknis Hologres.

Kesalahan: Otentikasi cloud gagal untuk access id

  • Penyebab: Pasangan AccessKey salah, atau tidak ada akun pengguna yang ditambahkan ke instance Hologres.

  • Solusi:

    • Verifikasi ID AccessKey dan Rahasia AccessKey. Dalam kebanyakan kasus, kesalahan ini dilaporkan jika Rahasia AccessKey salah atau mengandung spasi.

    • Jika Anda tidak dapat menemukan penyebabnya, gunakan AccessKey saat ini untuk terhubung ke HoloWeb dengan masuk menggunakan akun dan kata sandi. Periksa pesan kesalahan saat Anda menguji koneksi. Jika kesalahan yang sama dilaporkan, AccessKey tidak valid. Jika kesalahan FATAL: role "ALIYUN$xxxx" does not exist dilaporkan, akun tersebut tidak memiliki izin pada instans. Administrator harus memberikan izin yang diperlukan kepada akun tersebut.

Apa yang harus saya lakukan jika tidak ada data yang dapat dikueri setelah tabel dimensi digabungkan dengan tabel lain?

  • Penyebab: Tabel dimensi adalah tabel partisi. Hologres tidak mengizinkan tabel partisi untuk berfungsi sebagai tabel dimensi.

  • Solusi: Konversikan tabel partisi menjadi tabel standar.

Kesalahan: Memodifikasi rekaman berdasarkan kunci primer tidak ada pada tabel ini

  • Penyebab: Mode pembaruan ditentukan, tetapi tidak ada kunci utama yang dikonfigurasikan untuk tabel hasil Hologres.

  • Solusi: Konfigurasikan kunci utama.

Kesalahan: Jumlah kolom shard tidak cocok

  • Penyebab: Tidak semua kolom kunci distribusi ditulis. Secara default, kolom kunci utama adalah kolom kunci distribusi.

  • Solusi: Tulis semua kolom kunci distribusi.

Kesalahan: Baris penuh diperlukan, tetapi kolom xxx hilang

  • Penyebab: Data di kolom yang diperlukan hilang. Kesalahan ini dilaporkan di versi Hologres sebelumnya.

  • Solusi: Tetapkan nilai ke kolom yang diperlukan.

Apa yang harus saya lakukan jika jumlah koneksi JDBC meningkat tajam ketika pengguna VVP membaca data dari atau menulis data ke Hologres?

  • Penyebab: Konektor Hologres VVP menggunakan mode JDBC untuk membaca dari atau menulis ke Hologres, kecuali untuk binary logging. Ini menempati maksimal (Jumlah tabel Hologres untuk baca/tulis) × Paralelisme × connectionSize koneksi. `connectionSize` adalah parameter tabel VVP dengan nilai default 3.

  • Solusi: Jadwalkan jumlah koneksi yang sesuai, dan kurangi jumlah operasi baca/tulis bersamaan atau nilai parameter connectionSize. Jika jumlah operasi baca/tulis bersamaan atau nilai parameter connectionSize tidak dapat dikurangi, atur useRpcMode ke true untuk beralih ke mode RPC.

Apa yang harus saya lakukan jika pengguna Blink dan VVP tidak dapat terhubung ke Hologres saat mereka mencoba membaca data dari atau menulis data ke Hologres?

  • Penyebab: Kluster Blink atau VVP lambat atau tidak dapat mengakses Internet.

  • Solusi: Pastikan bahwa kluster Blink atau VVP berada di wilayah yang sama dengan instance Hologres dan menggunakan titik akhir VPC.

Kesalahan: Mode rpc Hologres tabel dimensi tidak mendukung join satu-ke-banyak

  • Penyebab: Dalam mode RPC untuk Blink dan VVP, tabel dimensi harus berupa tabel berorientasi baris dan bidang join harus merupakan kunci primer. Kesalahan ini sering terjadi karena kedua kondisi ini tidak terpenuhi.

  • Solusi: Gunakan mode JDBC dan gunakan mode penyimpanan berorientasi kolom atau hibrida baris-kolom untuk tabel dimensi.

Apa yang harus saya lakukan jika pesan kesalahan DatahubClientException dilaporkan?

  • Gejala: Kesalahan Disebabkan oleh: com.aliyun.datahub.client.exception.DatahubClientException: [httpStatus:503, requestId:null, errorCode:null, errorMessage:{"ErrorCode":"ServiceUnavailable","ErrorMessage":"Queue Full"}] dilaporkan.

  • Penyebab: Kolam thread penuh karena banyak pekerjaan konsumsi log biner dimulai ulang secara bersamaan karena alasan tertentu.

  • Solusi: Konsumsi log biner dalam batch.

Apa yang harus saya lakukan jika pesan kesalahan Error occurs when reading data from datahub dilaporkan?

  • Gejala: Kesalahan Kesalahan terjadi saat membaca data dari datahub, msg: [httpStatus:500, requestId:xxx, errorCode:InternalServerError, errorMessage:Get binlog timeout.] dilaporkan.

  • Penyebab: Setiap log biner berisi sejumlah besar data, yang membuat ukuran setiap permintaan RPC melebihi batas atas.

  • Solusi: Kurangi jumlah log biner dalam setiap batch ketika banyak bidang data dan string karakter panjang ada di setiap baris.

Kesalahan: Disebabkan oleh: java.lang.IllegalArgumentException: Kolom: created_time tipe tidak cocok: tipe baris flink: TIMESTAMP(6) WITH LOCAL TIME ZONE, hologres tipe: timestamp

  • Penyebab: Bidang Flink bertipe data TIMESTAMP(6), yang tidak didukung oleh Hologres.

  • Solusi: Ubah tipe data menjadi TIMESTAMP.

Kesalahan: Disebabkan oleh: org.postgresql.util.PSQLException: FATAL: Ditolak oleh daftar putih IP. db = xxx, usr=xxx, ip=xx.xx.xx.xx

  • Penyebab: Daftar putih alamat IP yang dikonfigurasikan di Hologres tidak berisi alamat IP yang digunakan oleh Flink untuk terhubung ke Hologres.

  • Solusi: Tambahkan alamat IP yang digunakan oleh Flink ke daftar putih alamat IP Hologres. Untuk informasi lebih lanjut, lihat Konfigurasikan daftar putih alamat IP.

Kesalahan: Disebabkan oleh: java.lang.RuntimeException: shaded.hologres.com.aliyun.datahub.client.exception.DatahubClientException: [httpStatus:400, requestId:xx, errorCode:TableVersionExpired, errorMessage:Tabel yang ditentukan telah dimodifikasi, harap refresh cursor dan coba lagi

  • Penyebab: Operasi DDL dilakukan pada tabel sumber, dan versi tabel berubah. Akibatnya, konsumsi data gagal.

  • Solusi: Tingkatkan versi Realtime Compute for Apache Flink ke 4.0.16 atau lebih baru. Setelah peningkatan, percobaan ulang konsumsi data dilakukan jika terjadi kegagalan.

Ketika pekerjaan yang mengonsumsi log biner dimulai, sebuah kesalahan dilaporkan untuk menunjukkan bahwa ID shard tidak ada. Apa yang harus saya lakukan?

  • Penyebab: Jumlah shard di tabel yang ingin Anda konsumsi datanya berubah setelah Anda mengganti nama tabel atau melakukan operasi lain pada tabel. Namun, informasi shard dari tabel asli digunakan ketika pekerjaan pulih dari checkpoint.

  • Solusi: Setelah Anda melakukan operasi seperti pembuatan ulang tabel, offset konsumsi log biner yang disimpan di checkpoint tidak valid. Anda harus memulai pekerjaan tanpa status.

Kesalahan: ERROR,22021,"urutan byte tidak valid untuk pengkodean ""UTF8"": 0x00"

  • Penyebab: Ketika Anda melakukan kueri titik di tabel dimensi, kunci utama dari tipe data STRING berisi karakter yang tidak dikodekan UTF-8. Akibatnya, pernyataan SQL gagal dieksekusi.

  • Solusi: Proses data kotor upstream.

Kesalahan: hologres.org.postgresql.util.PSQLException: ERROR: kesalahan sintaksis

  • Penyebab: Anda harus menentukan slot saat mengonsumsi data di log biner dalam mode JDBC. Kesalahan ini mungkin terjadi jika nama slot yang dibuat berisi karakter yang tidak didukung. Nama slot hanya boleh berisi huruf kecil, angka, dan garis bawah (_).

  • Solusi: Buat ulang slot, atau gunakan fitur pembuatan slot otomatis VVR 6.0.7.

Kesalahan: gagal membuat tabel hologres.hg_replication_progress

  • Penyebab: Saat Anda mengonsumsi log biner dalam mode JDBC, tabel hg_replication_progress mungkin diperlukan. Jika tabel ini tidak ada di database saat ini, tabel tersebut perlu dibuat. Namun, pembuatan gagal karena jumlah shard yang dapat dibuat untuk instans telah mencapai batas atas.

  • Solusi: Bersihkan database yang tidak lagi Anda butuhkan.

Pengecualian: Pekerjaan macet selama runtime. Sebuah thread dump menunjukkan bahwa pekerjaan macet pada tahap pemuatan driver JDBC, biasanya pada posisi Class.forName

  • Penyebab: Beberapa operasi inisialisasi statis dilakukan saat driver JDBC dimuat di JDK 8. Kondisi balapan mungkin terjadi selama pemuatan multi-thread.

  • Solusi: Coba lagi operasi atau gunakan konektor yang versi Realtime Compute for Apache Flink-nya adalah 6.0.7.

Apa yang harus saya lakukan jika pesan kesalahan "no table is defined in publication" atau "The table xxx has no slot named xxx" dilaporkan saat saya mengonsumsi log biner dalam mode JDBC?

  • Penyebab: Saat Anda menjatuhkan tabel dan membuat tabel lain dengan nama yang sama, publikasi yang terikat ke tabel lama tidak dijatuhkan.

  • Solusi: Ketika pengecualian ini terjadi, Anda dapat menjalankan pernyataan select * from pg_publication where pubname not in (select pubname from pg_publication_tables); di Hologres untuk menanyakan publikasi yang tidak dibersihkan. Kemudian, jalankan pernyataan drop publication xx; untuk menghapus publikasi yang tersisa. Setelah itu, Anda dapat memulai ulang pekerjaan.

Apa yang harus saya lakukan jika pesan kesalahan "permission denied for database" dilaporkan saat saya mempublikasikan pekerjaan?

  • Penyebab: Izin yang diperlukan tidak diberikan ke akun Anda saat Anda ingin mengonsumsi log biner dalam mode JDBC di Hologres V1.3 atau Hologres V2.0.

  • Solusi: Kami sarankan Anda meningkatkan instans Hologres Anda ke V2.1 dan menggunakan konektor yang berjalan pada Ververica Runtime (VVR) 8.0.5 atau yang lebih baru. Dengan cara ini, Anda dapat mengonsumsi log biner menggunakan akun yang diberi izin read-only. Jika peningkatan tidak didukung, berikan izin yang diperlukan berdasarkan batasan dalam Gunakan konektor Hologres dari Realtime Compute for Apache Flink untuk mengonsumsi data Hologres secara real-time.

Apa yang harus saya lakukan jika pesan kesalahan "table writer init failed: Fail to fetch table meta from sm" dilaporkan?

  • Penyebab: Data ditulis ke tabel setelah operasi truncate atau rename dilakukan pada tabel.

  • Solusi: Masalah ini kadang-kadang terjadi dan dapat diabaikan. Masalah ini diselesaikan secara otomatis setelah failover pekerjaan. Di Hologres V2.1.1 hingga V2.1.14, waktu cache replay ditingkatkan untuk node FE. Jika Anda mengeksekusi pernyataan DDL dan kemudian pernyataan bahasa manipulasi data (DML) pada tabel, replay DDL melambat. Probabilitas pengecualian serupa mungkin meningkat. Kami menyarankan Anda meningkatkan instance Hologres Anda ke versi minor terbaru dari V2.1.

Apa yang harus saya lakukan jika pesan kesalahan serupa dengan "java.lang.ClassNotFoundException: com.alibaba.ververica.connectors.hologres.binlog.source.reader.HologresBinlogRecordEmitter" dilaporkan saat saya menggunakan dependensi konektor untuk mengembangkan pekerjaan DataStream di lingkungan lokal?

Apa yang harus saya lakukan jika pesan kesalahan "Binlog Convert Failed" dilaporkan atau pembacaan data dari beberapa shard berhenti pada titik waktu tertentu selama konsumsi log biner dalam mode JDBC?

  • Penyebab: Saat gateway instance Hologres menerima pesan timeout backend, gateway mengirimkan pengecualian ke klien. Dalam proses ini, terjadi kesalahan. Akibatnya, pembacaan data macet, atau parsing data gagal.

  • Solusi: Dalam kebanyakan kasus, kesalahan ini terjadi karena backpressure pekerjaan. Jika pembacaan data macet, lanjutkan pekerjaan dari checkpoint terbaru. Untuk sepenuhnya menyelesaikan masalah ini, Anda harus meningkatkan instance Hologres Anda ke V2.2.21 atau lebih baru.