Topik ini menjawab pertanyaan umum terkait sinkronisasi data di Realtime Compute for Apache Flink.
Bagaimana cara menangani perubahan skema JSON ketika pesan berformat JSON dikirim dari Kafka ke Hologres melalui Flink?
Solusi umum adalah membatalkan penyebaran Flink, memodifikasi kode dan skema tabel Hologres, menerapkan ulang skrip, lalu memulai kembali penyebaran. Namun, pendekatan ini dapat menunda pengiriman data dan menyebabkan kesalahan.
Realtime Compute for Apache Flink mengimplementasikan optimasi berikut untuk menangani evolusi skema:
Evolusi skema adaptif mandiri untuk pesan JSON Kafka. Ketika terjadi perubahan skema JSON, Flink secara otomatis menyinkronkan perubahan tersebut ke Hologres tanpa perlu membatalkan penyebaran atau memodifikasi kode.
Inferensi tipe untuk pesan JSON Kafka. Fitur ini menghilangkan kebutuhan untuk mendeklarasikan tipe data dalam DDL tabel Kafka.
Ekspansi JSON rekursif. Sebagai contoh, dalam {"nested": {"col": true}}, kolom
coldiperluas secara rekursif menjadinested.col.
Bagaimana cara memperbaiki kesalahan "Encountered change event for table xxx.xxx whose schema isn't known to this connector"?
Deskripsi

Penyebab
Ketika menggunakan CREATE DATABASE AS (CDAS) atau CREATE TABLE AS (CTAS) untuk menyinkronkan tabel baru, kesalahan ini kemungkinan besar disebabkan oleh salah satu alasan berikut:
Izin database tidak mencukupi. Akun database yang dikonfigurasi untuk konektor pekerjaan Flink tidak memiliki izin yang cukup untuk mengakses database yang diperlukan.
'debezium.snapshot.mode'='never'telah dikonfigurasi. Data dibaca dari awal log biner, tetapi skema tabel yang sesuai dengan perubahan acara di awal log biner tidak sesuai dengan skema tabel saat ini.Terdapat perubahan yang tidak dapat ditangani oleh Debezium, seperti `DEFAULT (now())`.
Solusi
Berikan izin yang diperlukan pada semua database yang digunakan dalam pekerjaan Flink kepada akun database. Izin yang diperlukan biasanya mencakup: membaca, menulis, dan memperbarui data, membuat dan memperbarui skema tabel, serta membuat tabel. Untuk persyaratan izin rinci, lihat topik Konektor tertentu.
Gunakan opsi
'debezium.inconsistent.schema.handling.mode' = 'warn'sebagai ganti'debezium.snapshot.mode'='never'.Cari entri log
io.debezium.connector.mysql.MySqlSchema WARN, yang menunjukkan perubahan spesifik yang tidak dapat ditangani oleh Debezium, seperti`DEFAULT (now())`.
Bagaimana cara memperbaiki kesalahan "Currently does not support merge StreamExecMiniBatchAssigner type ExecNode in CTAS/CDAS syntax"?
Deskripsi
Kesalahan berikut dilaporkan ketika Anda menerapkan draf SQL atau memulai penyebaran SQL:

Penyebab
Anda telah mengatur
'table.exec.mini-batch.enabled' = 'true'untuk mengaktifkan MiniBatch dalam draf aliran SQL yang berisi pernyataan CTAS atau CDAS, yang tidak mendukung MiniBatch.Solusi
Hapus konfigurasi MiniBatch dari draf aliran SQL Anda yang berisi pernyataan CTAS atau CDAS. Pilih salah satu solusi berikut sesuai dengan situasi Anda:
Draf SQL Anda belum berhasil diterapkan:
Di panel navigasi sisi kiri konsol pengembangan, pilih .
Di panel Configurations, pilih tab Deployment Defaults.
Di bagian Other Configuration, hapus konfigurasi MiniBatch atau atur
table.exec.mini-batch.enabledkefalse.Klik Save Changes.
Terapkan draf lagi.

Draf SQL Anda telah diterapkan:
Jika Anda telah berhasil menerapkan draf dengan melewati validasi, lakukan hal berikut:
Di panel navigasi sisi kiri konsol pengembangan, pilih .
Klik nama penyebaran SQL Anda.
Pilih tab Configuration.
Di bagian Parameters, klik Edit.
Di bidang Other Configuration, hapus konfigurasi MiniBatch atau atur
table.exec.mini-batch.enabledkefalse.Mulai ulang penyebaran.
