Pernyataan CREATE TABLE AS (CTAS) menyinkronkan data dan perubahan skema dari tabel sumber ke tabel sink secara real-time, sehingga menyederhanakan pembuatan dan pemeliharaan tabel sink seiring evolusi skema sumber. Topik ini menjelaskan cara menggunakan pernyataan CTAS beserta contoh praktisnya.
Kami menyarankan menggunakan pekerjaan ingesti data berbasis YAML untuk menyinkronkan data dari sumber ke sink. Pekerjaan SQL CTAS/CDAS yang sudah ada dapat dikonversi menjadi pekerjaan YAML hanya dengan satu klik menggunakan fitur pembuatan pekerjaan CTAS/CDAS.
-
Keunggulan fitur YAML: Pekerjaan YAML mencakup semua kemampuan CTAS/CDAS, termasuk sinkronisasi database penuh, sinkronisasi tabel tunggal, sinkronisasi tabel dan database terpartisi, sinkronisasi tabel baru, perubahan skema, serta sinkronisasi kolom terhitung. Fitur tambahan juga tersedia, seperti sinkronisasi perubahan skema langsung, sinkronisasi binlog mentah, filter klausa WHERE, pemangkasan kolom, dan user-defined function (UDF).
-
Keunggulan performa YAML: Dibandingkan pekerjaan SQL, pekerjaan YAML secara default menggunakan satu operator sumber untuk membaca dari beberapa tabel dan satu operator sink untuk menulis ke beberapa tabel, sehingga mengurangi beban resource.
Untuk lebih banyak contoh, lihat Praktik terbaik ingesti data Flink CDC.
Fitur utama
Sinkronisasi data
|
Fitur |
Deskripsi |
|
Sinkronisasi tabel tunggal |
Menyinkronkan data historis dan inkremental dari tabel sumber ke tabel sink secara real-time. (Lihat Contoh: Sinkronisasi tabel tunggal.) |
|
Gabung dan sinkronisasi tabel serta database terpartisi |
Mencocokkan beberapa tabel dan database terpartisi dengan menggunakan regular expression untuk menentukan nama mereka. Data yang cocok kemudian digabung dan disinkronkan ke dalam satu tabel sink. (Lihat Contoh: Gabung dan sinkronisasi tabel serta database terpartisi.) Catatan
Karakter caret ( |
|
Sinkronisasi kolom terhitung |
Menentukan kolom terhitung untuk melakukan transformasi pada data tabel sumber. Kolom terhitung dapat menggunakan fungsi bawaan atau kustom, dan posisinya dapat ditentukan. Kolom baru ini dibuat sebagai kolom fisik di tabel sink, dan hasilnya disinkronkan secara real-time. (Lihat Contoh: Sinkronisasi kolom terhitung.) |
|
Pernyataan CTAS ganda |
|
Sinkronisasi perubahan skema
Saat menyinkronkan data secara real-time, pernyataan CTAS juga mereplikasi perubahan skema dari tabel sumber ke tabel sink. Perubahan skema mencakup pembuatan tabel awal dan setiap perubahan tabel berikutnya.
-
Perubahan skema yang didukung
Perubahan skema
Deskripsi
Tambah kolom nullable
Kolom yang sesuai secara otomatis ditambahkan di akhir skema tabel sink, dan datanya disinkronkan. Kolom baru secara default bersifat nullable, dan nilainya untuk baris yang sudah ada diatur ke NULL.
Tambah kolom non-null
Kolom yang sesuai secara otomatis ditambahkan di akhir skema tabel sink, dan datanya disinkronkan.
Hapus kolom nullable
Kolom tersebut tidak dihapus dari tabel sink. Sebagai gantinya, datanya secara otomatis diatur ke NULL.
Ubah nama kolom
Hal ini dianggap sebagai penambahan kolom baru dan penghapusan kolom lama. Kolom yang diubah namanya ditambahkan di akhir skema tabel sink, dan data di kolom asli secara otomatis diatur ke NULL.
CatatanSebagai contoh, jika
col_adiubah namanya menjadicol_b, makacol_bditambahkan di akhir tabel sink, dan data untukcol_adiatur ke NULL.Ubah tipe data kolom
-
Jika sistem sink mendukung perubahan tipe data: Saat ini, hanya Paimon yang mendukung penanganan perubahan tipe data. CTAS mendukung perubahan tipe untuk kolom standar, seperti dari INT ke BIGINT.
Perubahan tipe yang didukung bergantung pada aturan sink. Lihat dokumentasi konektor sink tertentu untuk detail selengkapnya.
-
Jika sistem sink tidak mendukung perubahan tipe data: Saat ini, hanya Hologres yang mendukung mode normalisasi tipe untuk menangani perubahan tipe data. Dalam mode ini, pekerjaan CTAS membuat tabel downstream dengan tipe data yang lebih luas. Pendekatan ini memanfaatkan kompatibilitas sink terhadap perubahan tipe data. Untuk detail selengkapnya, lihat Contoh: Sinkronisasi data dalam mode normalisasi tipe.
PentingAnda harus mengaktifkan mode normalisasi tipe saat pekerjaan CTAS pertama kali dijalankan. Jika tidak, Anda harus menghapus tabel sink dan melakukan restart tanpa status agar mode ini berlaku.
PentingCTAS mendeteksi perubahan skema dengan membandingkan skema catatan berturut-turut, bukan dengan mengidentifikasi operasi DDL tertentu.
-
Jika sebuah kolom dihapus lalu ditambahkan kembali tanpa perubahan data di antaranya, CTAS tidak mendeteksi adanya perubahan skema.
-
CTAS hanya mendeteksi perubahan skema setelah kolom baru ditambahkan dan terjadi perubahan data. Kemudian, perubahan skema tersebut disinkronkan ke tabel sink.
-
-
Perubahan skema yang tidak didukung
-
Perubahan pada constraint, seperti primary key atau indeks.
-
Penghapusan kolom non-null.
-
Mengubah kolom dari NOT NULL menjadi NULLABLE.
PentingJika terjadi perubahan skema yang tidak didukung, Anda harus secara manual menghapus tabel sink dan me-restart pekerjaan CTAS. Hal ini akan membuat ulang tabel sink dan menyinkronkan ulang data historis.
-
Proses startup
Contoh berikut menunjukkan proses sinkronisasi data dari MySQL ke Hologres menggunakan CTAS.
|
Diagram alur |
Proses startup |
|
|
Menjalankan pernyataan CTAS memicu proses berikut:
|
Prasyarat
Sebelum menjalankan pernyataan CTAS, pastikan katalog tujuan telah didaftarkan di ruang kerja Anda. Untuk informasi selengkapnya, lihat Data Management.
Batasan
Batasan sintaks
-
Fitur debug tidak didukung.
-
Anda tidak dapat menggunakan pernyataan
INSERT INTOdalam pekerjaan yang sama. -
Sinkronisasi ke tabel partisi StarRocks tidak didukung.
-
Konfigurasi MiniBatch tidak didukung.
Penting-
Sebelum membuat pekerjaan SQL: Di halaman Configuration Management, pastikan semua pengaturan MiniBatch dihapus dari bagian Other Configurations pada tab Job Default Configurations.
-
Setelah membuat pekerjaan SQL: Untuk solusinya, lihat Error: Currently does not support merge StreamExecMiniBatchAssigner type ExecNode in CTAS/CDAS syntax.
-
Kompatibilitas sumber dan sink
Tabel berikut mencantumkan konektor sumber dan sink yang didukung untuk CTAS.
|
Konektor |
Tabel sumber |
Tabel sink |
Catatan |
|
√ |
× |
|
|
|
√ |
× |
Tidak ada. |
|
|
√ |
× |
|
|
|
× |
√ |
Tidak ada. |
|
|
× |
√ |
Hanya StarRocks pada EMR yang didukung. |
|
|
× |
√ |
Jika sink-nya adalah Hologres, CTAS membuat sejumlah koneksi untuk setiap tabel berdasarkan parameter Catatan
Saat menyinkronkan data ke Hologres, jika tabel sumber Anda berisi tipe data yang tidak didukung oleh Fixed Plan, kami menyarankan menggunakan pernyataan INSERT INTO untuk melakukan konversi tipe dalam Flink sebelum menyinkronkan data. Jangan gunakan CTAS untuk membuat tabel sink, karena metode ini tidak dapat menggunakan Fixed Plan dan menghasilkan performa penulisan yang buruk. |
|
|
× |
√ |
Hanya VVR 11.1 atau versi lebih baru dari engine Realtime Compute for Apache Flink yang mendukung sinkronisasi data ke tabel sink Paimon DLF 2.5. |
Sintaks
CREATE TABLE IF NOT EXISTS <sink_table>
(
[ <table_constraint> ]
)
[COMMENT table_comment]
[PARTITIONED BY (partition_column_name1, partition_column_name2, ...)]
WITH (
key1=val1,
key2=val2,
...
)
AS TABLE <source_table> [/*+ OPTIONS(key1=val1, key2=val2, ... ) */]
[ADD COLUMN { <column_component> | (<column_component> [, ...])}];
<sink_table>:
[catalog_name.][db_name.]table_name
<table_constraint>:
[CONSTRAINT constraint_name] PRIMARY KEY (column_name, ...) NOT ENFORCED
<source_table>:
[catalog_name.][db_name.]table_name
<column_component>:
column_name AS computed_column_expression [COMMENT column_comment] [FIRST | AFTER column_name]
Sintaks CTAS didasarkan pada pernyataan CREATE TABLE. Tabel berikut menjelaskan parameternya.
|
Parameter |
Deskripsi |
|
|
Nama tabel sink untuk sinkronisasi data. Anda dapat menentukan nama katalog dan database. |
|
|
Deskripsi untuk tabel sink. Secara default, deskripsi dari |
|
|
Membuat tabel partisi berdasarkan satu atau beberapa kolom. Penting
Sinkronisasi ke tabel partisi StarRocks tidak didukung. |
|
|
Menentukan constraint primary key untuk tabel, yang menjamin keunikan data. |
|
|
Opsi tabel sink. Anda dapat memasukkan parameter Catatan
Baik kunci maupun nilai harus berupa string. Contohnya, |
|
|
Nama tabel sumber untuk sinkronisasi data. Anda dapat menentukan nama katalog dan database. |
|
|
Opsi tabel sumber. Anda dapat memasukkan parameter Catatan
Baik kunci maupun nilai harus bertipe string, misalnya, 'server-id' = '65500'. |
|
|
Menentukan kolom baru atau kolom yang diubah namanya untuk tabel sink relatif terhadap tabel sumber. Mendukung alias kolom dan kolom terhitung. Penting
Pemetaan bidang murni, seperti |
|
|
Definisi kolom baru. |
|
|
Ekspresi yang digunakan untuk menghitung kolom. |
|
|
Menempatkan kolom baru sebagai bidang pertama dalam skema logis tabel. Jika parameter ini tidak ditentukan, kolom baru secara default ditambahkan di akhir skema logis. |
|
|
Menempatkan kolom baru setelah kolom yang sudah ada. |
-
Kata kunci
IF NOT EXISTSwajib digunakan. Jika tabel sink belum ada di penyimpanan tujuan, tabel tersebut akan dibuat terlebih dahulu. Jika sudah ada, langkah pembuatan dilewati. -
Skema tabel sink mewarisi skema tabel sumber, termasuk primary key dan nama serta tipe kolom fisik. Skema ini tidak mencakup kolom terhitung, kolom metadata, atau watermark.
-
Tipe data kolom dikonversi melalui pemetaan tipe dari tabel sumber ke tabel sink. Untuk informasi selengkapnya, lihat bagian pemetaan tipe dalam dokumentasi konektor yang sesuai.
Contoh kode
Sinkronisasi tabel tunggal
Skenario: Menyinkronkan tabel web_sales dari MySQL ke Hologres.
Prasyarat: Anda telah mendaftarkan katalog berikut di ruang kerja Anda.
-
Katalog Hologres bernama holo.
-
Katalog MySQL bernama mysql.
Contoh kode:
CTAS biasanya digunakan dengan katalog baik untuk sumber data maupun tujuan. Katalog sumber secara otomatis mengurai skema dan opsi tabel sumber, sehingga menghilangkan kebutuhan DDL manual dan memungkinkan sinkronisasi data historis serta inkremental dari tabel sumber ke tabel sink.
USE CATALOG holo;
CREATE TABLE IF NOT EXISTS web_sales -- Jika database tidak ditentukan, tabel disinkronkan ke tabel web_sales di database default.
WITH ('jdbcWriteBatchSize' = '1024') -- Opsional: Menentukan parameter untuk tabel sink.
AS TABLE mysql.tpcds.web_sales
/*+ OPTIONS('server-id'='8001-8004') */; -- Menentukan parameter tambahan untuk tabel sumber mysql-cdc.
Gabung tabel terpartisi
Skenario: Gunakan CTAS untuk menggabungkan beberapa tabel MySQL terpartisi menjadi satu tabel Hologres.
Solusi: Dalam kombinasi dengan katalog MySQL, gunakan regular expression untuk mencocokkan nama database dan tabel yang ingin Anda sinkronkan. Nama database dan tabel ditulis sebagai dua kolom tambahan di tabel sink. Untuk memastikan keunikan primary key, nama database, nama tabel, dan primary key asli digabungkan untuk membentuk primary key komposit baru untuk tabel Hologres.
Contoh kode dan hasil penggabungan:
|
Contoh kode |
Hasil penggabungan |
|
Skenario penggabungan dan sinkronisasi tabel terpartisi:
|
|
|
Skenario perubahan skema tabel sumber: Kolom age ditambahkan ke tabel user02 dan sebuah catatan dimasukkan. Meskipun skema tabel terpartisi tidak konsisten, data dan perubahan skema selanjutnya di tabel user02 secara otomatis disinkronkan ke tabel downstream secara real-time.
|
|
Sinkronisasi kolom terhitung
Skenario: Tambahkan kolom terhitung kustom ke tabel Hologres selama proses penggabungan dan sinkronisasi tabel MySQL terpartisi.
Contoh kode dan hasil penggabungan:
|
Contoh kode |
Hasil penggabungan |
|
|
Pernyataan CTAS ganda sebagai satu pekerjaan
Skenario: Menyinkronkan tabel web_sales MySQL dan tabel user terpartisi ke Hologres sebagai satu pekerjaan.
Solusi: Gunakan sintaks STATEMENT SET untuk mengirim beberapa pernyataan CTAS sebagai satu pekerjaan. Pendekatan ini memungkinkan satu node sumber digunakan ulang untuk membaca data dari beberapa tabel bisnis, sehingga mengurangi jumlah server ID, koneksi database, dan beban baca pada sumber MySQL CDC.
-
Sumber dapat digunakan ulang hanya jika
OPTIONSuntuk tabel sumber identik. -
Untuk informasi tentang pengaturan server ID di konektor MySQL, lihat Atur server ID untuk menghindari konflik konsumsi binlog.
Contoh kode:
USE CATALOG holo;
BEGIN STATEMENT SET;
-- Sinkronisasi tabel web_sales.
CREATE TABLE IF NOT EXISTS web_sales
AS TABLE mysql.tpcds.web_sales
/*+ OPTIONS('server-id'='8001-8004') */;
-- Sinkronisasi tabel user terpartisi.
CREATE TABLE IF NOT EXISTS user
AS TABLE mysql.`wp.*`.`user[0-9]+`
/*+ OPTIONS('server-id'='8001-8004') */;
END;
Sinkronisasi satu sumber ke beberapa tabel sink
-
Jika tabel sink tidak memerlukan kolom terhitung
USE CATALOG `holo`; BEGIN STATEMENT SET; -- Gunakan pernyataan CTAS untuk menyinkronkan tabel user MySQL ke tabel user di database1 gudang data Hologres. CREATE TABLE IF NOT EXISTS `database1`.`user` AS TABLE `mysql`.`tpcds`.`user` /*+ OPTIONS('server-id'='8001-8004') */; -- Gunakan pernyataan CTAS untuk menyinkronkan tabel user MySQL ke tabel user di database2 gudang data Hologres. CREATE TABLE IF NOT EXISTS `database2`.`user` AS TABLE `mysql`.`tpcds`.`user` /*+ OPTIONS('server-id'='8001-8004') */; END; -
Jika tabel sink memerlukan kolom terhitung
-- Buat tabel temporary user_with_changed_id berdasarkan tabel sumber user. Mendukung definisi kolom terhitung, seperti computed_id, yang dihitung berdasarkan id dari tabel sumber. CREATE TEMPORARY TABLE `user_with_changed_id` ( `computed_id` AS `id` + 1000 ) LIKE `mysql`.`tpcds`.`user`; -- Buat tabel temporary user_with_changed_age berdasarkan tabel sumber user. Mendukung definisi kolom terhitung, seperti computed_age, yang dihitung berdasarkan age dari tabel sumber. CREATE TEMPORARY TABLE `user_with_changed_age` ( `computed_age` AS `age` + 1 ) LIKE `mysql`.`tpcds`.`user`; BEGIN STATEMENT SET; -- Gunakan pernyataan CTAS untuk menyinkronkan tabel user MySQL ke tabel user_with_changed_id di gudang data Hologres. Tabel ini akan berisi ID terhitung di kolom computed_id. CREATE TABLE IF NOT EXISTS `holo`.`tpcds`.`user_with_changed_id` AS TABLE `user_with_changed_id` /*+ OPTIONS('server-id'='8001-8004') */; -- Gunakan pernyataan CTAS untuk menyinkronkan tabel user MySQL ke tabel user_with_changed_age di gudang data Hologres. Tabel ini akan berisi usia terhitung di kolom computed_age. CREATE TABLE IF NOT EXISTS `holo`.`tpcds`.`user_with_changed_age` AS TABLE `user_with_changed_age` /*+ OPTIONS('server-id'='8001-8004') */; END;
Sinkronisasi tabel baru
Skenario: Setelah pekerjaan dengan beberapa pernyataan CTAS dijalankan, Anda perlu menambahkan pernyataan CTAS baru untuk menyinkronkan data dari tabel yang baru ditambahkan.
Solusi: Aktifkan fitur deteksi tabel baru di pekerjaan SQL, tambahkan pernyataan CTAS baru, lalu restart pekerjaan dari titik simpan. Setelah tabel baru terdeteksi, datanya akan disinkronkan.
Batasan:
-
Fitur deteksi tabel baru didukung di VVR 8.0.1 dan versi lebih baru.
-
Saat menyinkronkan dari tabel sumber CDC, fitur deteksi tabel baru hanya didukung untuk pekerjaan dengan mode startup tabel sumber diatur ke initial.
-
Konfigurasi tabel sumber baru dalam pernyataan CTAS yang ditambahkan harus identik dengan konfigurasi tabel sumber yang sudah ada untuk memastikan sumber dapat digunakan ulang.
-
Parameter konfigurasi pekerjaan, seperti mode startup, tidak boleh diubah sebelum dan sesudah penambahan pernyataan CTAS baru.
Prosedur:
-
Saat Anda perlu menambahkan pernyataan CTAS baru, buka halaman O&M (Operations and Maintenance), hentikan pekerjaan, dan pilih Stop With Savepoint.
-
Di pekerjaan SQL, aktifkan deteksi tabel baru, tambahkan pernyataan CTAS baru, lalu Deploy pekerjaan lagi.
-
Tambahkan pernyataan berikut ke pekerjaan SQL untuk mengaktifkan deteksi tabel baru.
SET 'table.cdas.scan.newly-added-table.enabled' = 'true'; -
Tambahkan pernyataan CTAS baru ke pekerjaan SQL. Kode lengkap akhirnya adalah sebagai berikut.
-- Aktifkan deteksi tabel baru. SET 'table.cdas.scan.newly-added-table.enabled' = 'true'; USE CATALOG holo; BEGIN STATEMENT SET; -- Sinkronisasi tabel web_sales. CREATE TABLE IF NOT EXISTS web_sales AS TABLE mysql.tpcds.web_sales /*+ OPTIONS('server-id'='8001-8004') */; -- Sinkronisasi tabel user terpartisi. CREATE TABLE IF NOT EXISTS user AS TABLE mysql.`wp.*`.`user[0-9]+` /*+ OPTIONS('server-id'='8001-8004') */; -- Sinkronisasi tabel product. (Tabel baru) CREATE TABLE IF NOT EXISTS product AS TABLE mysql.tpcds.product /*+ OPTIONS('server-id'='8001-8004') */; END; -
Klik Deploy.
-
-
Pulihkan pekerjaan dari titik simpan.
-
Di halaman O&M (Operations and Maintenance), klik nama pekerjaan target, buka tab State Management, lalu klik History.
-
Di daftar Savepoints, temukan titik simpan yang dibuat saat pekerjaan dihentikan.
-
Di kolom Actions untuk titik simpan target, pilih untuk menjalankan pekerjaan. Untuk informasi selengkapnya, lihat Jalankan pekerjaan.
-
Sinkronisasi ke tabel partisi Hologres
Skenario: Gunakan pernyataan CTAS untuk menyinkronkan tabel sumber MySQL ke tabel partisi Hologres.
Aturan partisi Hologres: Di Hologres, jika primary key ditentukan untuk tabel sink, kolom partisi harus termasuk dalam primary key.
Contoh kode:
Pernyataan DDL untuk tabel sumber MySQL adalah sebagai berikut:
CREATE TABLE orders (
order_id INTEGER NOT NULL,
product_id INTEGER NOT NULL,
city VARCHAR(100) NOT NULL
order_date DATE,
purchaser INTEGER,
PRIMARY KEY(order_id, product_id)
);
Pendekatannya berbeda tergantung pada apakah primary key tabel sumber mencakup kunci partisi.
-
Jika primary key sumber mencakup kolom partisi, Anda dapat menyinkronkan langsung dengan pernyataan CTAS.
Hologres secara otomatis memverifikasi bahwa kolom partisi merupakan bagian dari primary key.
CREATE TABLE IF NOT EXISTS `holo`.`tpcds`.`orders` PARTITIONED BY (product_id) AS TABLE `mysql`.`tpcds`.`orders`; -
Jika primary key sumber tidak mencakup kolom partisi, deklarasikan ulang primary key tabel sink dalam pernyataan CTAS.
Jika kolom partisi (misalnya,
city) bukan bagian dari primary key tabel sumber, pekerjaan akan gagal. Anda harus mendeklarasikan ulang primary key tabel sink dalam pernyataan CTAS untuk memastikan kolom partisi termasuk dalam primary key.-- Anda dapat menggunakan SQL berikut untuk menentukan primary key tabel partisi Hologres sebagai order_id, product_id, dan city. CREATE TABLE IF NOT EXISTS `holo`.`tpcds`.`orders`( CONSTRAINT `PK_order_id_city` PRIMARY KEY (`order_id`,`product_id`,`city`) NOT ENFORCED ) PARTITIONED BY (city) AS TABLE `mysql`.`tpcds`.`orders`;
Sinkronisasi data dalam mode normalisasi tipe
Skenario: Saat menggunakan pernyataan CTAS untuk menyinkronkan data ke tabel Hologres, Anda perlu mendukung skenario yang memerlukan penyesuaian presisi tipe data yang ada (misalnya, dari VARCHAR(10) ke VARCHAR(20)) atau mengubah tipe data (misalnya, dari SMALLINT ke INT).
Solusi: Gunakan mode normalisasi tipe Hologres untuk menyinkronkan data. Mode normalisasi tipe harus diaktifkan saat pekerjaan CTAS pertama kali dijalankan. Jika tidak diaktifkan saat startup, Anda harus menghapus tabel downstream dan melakukan restart tanpa status agar mode ini berlaku.
Aturan normalisasi tipe:
Setelah tipe data upstream diubah, jika tipe baru dan asli dinormalisasi ke tipe target yang sama, pekerjaan berjalan normal. Jika tidak, perubahan tersebut dianggap tidak kompatibel, dan pekerjaan CTAS melemparkan exception. Aturan spesifiknya adalah sebagai berikut:
-
TINYINT,SMALLINT,INT, danBIGINTdinormalisasi keBIGINT. -
CHAR,VARCHAR, danSTRINGdinormalisasi keSTRING. -
FLOATdanDOUBLEdinormalisasi keDOUBLE. -
Tipe data lainnya dibuat sesuai aturan pemetaan tipe asli. Untuk informasi selengkapnya, lihat Pemetaan tipe.
Contoh kode:
CREATE TABLE IF NOT EXISTS `holo`.`tpcds`.`orders`
WITH (
'connector' = 'hologres',
'enableTypeNormalization' = 'true' -- Aktifkan mode normalisasi tipe.
) AS TABLE `mysql`.`tpcds`.`orders`;
Sinkronisasi MongoDB ke Hologres
Batasan:
-
Memerlukan Realtime Compute for Apache Flink VVR 8.0.6 atau versi lebih baru dan MongoDB 6.0 atau versi lebih baru.
-
Di SQL Hints, atur scan.incremental.snapshot.enabled dan scan.full-changelog ke true.
-
Fitur pre- dan post-images harus diaktifkan di database MongoDB. Untuk informasi cara mengaktifkannya, lihat Document Preimages.
-
Menyinkronkan beberapa koleksi MongoDB dalam satu pekerjaan memiliki persyaratan berikut:
-
Konfigurasi MongoDB harus identik untuk setiap tabel, termasuk
hosts,scheme,username,password, danconnectionOptions. -
Konfigurasi
scan.startup.modeharus identik untuk setiap tabel.
-
Contoh kode:
BEGIN STATEMENT SET;
CREATE TABLE IF NOT EXISTS `holo`.`database`.`table1`
AS TABLE `mongodb`.`database`.`collection1`
/*+ OPTIONS('scan.incremental.snapshot.enabled'='true','scan.full-changelog'='true') */;
CREATE TABLE IF NOT EXISTS `holo`.`database`.`table2`
AS TABLE `mongodb`.`database`.`collection2`
/*+ OPTIONS('scan.incremental.snapshot.enabled'='true','scan.full-changelog'='true') */;
END;
FAQ
Operasi pekerjaan
-
Apa yang harus saya lakukan jika pekerjaan gagal dijalankan?
-
Apa yang harus saya lakukan jika pekerjaan restart secara tak terduga?
-
Isu timeout: Error: akka.pattern.AskTimeoutException
Performa pekerjaan
-
Bagaimana cara mengatasi efisiensi rendah dan tekanan balik selama fase pembacaan tabel penuh?
-
Bagaimana cara menyelidiki konsumsi data yang tidak stabil dari sumber upstream?
Sinkronisasi data
-
Error saat menggunakan konfigurasi MiniBatch: Error: Currently does not support merge StreamExecMiniBatchAssigner type ExecNode in CTAS/CDAS syntax
-
Bagaimana cara mengidentifikasi masalah ketika Flink tidak dapat membaca data sumber?
-
Bagaimana cara mengidentifikasi masalah ketika Flink tidak dapat menulis data ke tabel sink?
-
Bagaimana cara mengatasi ketidakakuratan data dalam pekerjaan?
Dokumen terkait
-
CTAS menggunakan katalog untuk mengelola metadata tabel persisten, mengatasi keterbatasan seperti ketidakmampuan mempertahankan skema dan mengakses tabel lintas pekerjaan. Untuk penggunaan katalog umum, lihat:
-
Kasus penggunaan dan skenario praktis untuk CTAS dan CDAS:
-
Menyinkronkan seluruh database, menggabungkan database, atau menyinkronkan tabel yang baru ditambahkan di database sumber: Pernyataan CREATE DATABASE AS (CDAS).
-
Menyinkronkan seluruh database MySQL ke Kafka untuk mengurangi beban database dari beberapa pekerjaan: Sinkronisasi database MySQL ke Kafka dengan Flink CDC.
-
Tutorial tentang implementasi sinkronisasi data menggunakan CTAS dan CDAS: Ingesti database real-time, Bangun gudang data real-time Hologres, atau Lakehouse streaming Paimon dan StarRocks.
-
-
Mengimplementasikan sinkronisasi data melalui pekerjaan YAML:
-
Mulai cepat: Pekerjaan ingesti data Flink CDC.
-
Mengonversi pekerjaan CTAS ke pekerjaan YAML: Buat pekerjaan ingesti data Flink CDC.
-


