Topik ini menjelaskan cara menggunakan konektor Paimon untuk streaming data lakehouse. Untuk hasil terbaik, kami merekomendasikan penggunaan konektor ini bersama Paimon Catalog.
Informasi latar belakang
Apache Paimon adalah format penyimpanan data lake terpadu untuk aliran (streaming) dan batch yang mendukung penulisan throughput tinggi serta kueri latensi rendah. Paimon terintegrasi dengan baik bersama mesin komputasi populer yang tersedia di Alibaba Cloud E-MapReduce, seperti Flink, Spark, Hive, dan Trino. Anda dapat menggunakan Apache Paimon untuk membangun data lake secara cepat di HDFS atau OSS dan menghubungkannya ke mesin komputasi tersebut guna melakukan analitik data lake. Untuk informasi lebih lanjut, lihat Apache Paimon.
|
Kategori |
Deskripsi |
|
Tipe yang didukung |
Tabel sumber, tabel dimensi, tabel hasil, dan target untuk ingesti data |
|
Mode eksekusi |
Mode streaming dan mode batch |
|
Format data |
Tidak didukung |
|
Metrik pemantauan |
Tidak ada |
|
Tipe API |
SQL dan YAML untuk ingesti data |
|
Pembaruan dan penghapusan pada tabel hasil |
Ya |
Fitur utama
Apache Paimon menyediakan kemampuan inti berikut:
-
Membangun data lake ringan dan berbiaya rendah di HDFS atau object storage.
-
Membaca dan menulis dataset berskala besar dalam mode streaming maupun batch.
-
Menjalankan kueri batch dan OLAP dengan freshness data dari hitungan menit hingga detik.
-
Menyuntikkan dan menghasilkan data inkremental, berfungsi sebagai lapisan penyimpanan baik untuk gudang data offline tradisional maupun gudang data streaming modern.
-
Melakukan pre-agregasi data untuk mengurangi biaya penyimpanan dan beban komputasi downstream.
-
Mengakses versi historis data.
-
Menyaring data secara efisien.
-
Mendukung evolusi skema.
Batasan dan rekomendasi
-
Konektor Paimon memerlukan mesin komputasi Flink VVR 6.0.6 atau versi yang lebih baru.
-
Tabel berikut mencantumkan kompatibilitas versi antara Paimon dan VVR.
Versi Apache Paimon
VVR
1.3.1
11.5, 11.6
1.3
11.4
1.2
11.2, 11.3
1.1
11.1
1.0
8.0.11
0.9
8.0.7, 8.0.8, 8.0.9, 8.0.10
-
Rekomendasi penyimpanan untuk penulisan konkuren
Saat beberapa job melakukan penulisan konkuren ke tabel Paimon yang sama, penggunaan penyimpanan OSS standar (oss://) kadang-kadang dapat menyebabkan konflik commit atau kegagalan job karena keterbatasan operasi file atomik.
Untuk penulisan yang stabil dan konsisten, gunakan layanan metadata atau penyimpanan yang menyediakan jaminan atomik kuat. Opsi yang disarankan adalah Data Lake Formation (DLF), yang menawarkan manajemen terpadu untuk metadata dan penyimpanan Paimon. Sebagai alternatif, Anda dapat menggunakan OSS-HDFS atau HDFS.
-
Cara perubahan konfigurasi diterapkan
Perubahan pada parameter konfigurasi tabel Paimon hanya berlaku setelah Anda me-restart job terkait. Job yang sedang berjalan tidak memuat perubahan tersebut secara dinamis.
-
Penghapusan fisik tertunda untuk partisi yang di-drop
Saat Anda menjalankan operasi DROP PARTITION, sistem tidak langsung menghapus file data fisik yang mendasarinya.
Operasi ini hanya melakukan penghapusan logis. Paimon hanya menghapus metadata partisi target dari snapshot terbaru. Karena Paimon mendukung fitur time travel, snapshot historis masih mereferensikan file data partisi tersebut. File data fisik tersebut baru dihapus secara permanen setelah semua snapshot historis yang mereferensikan partisi tersebut mencapai batas retensi mereka dan dibersihkan oleh mekanisme kedaluwarsa snapshot.
SQL
Gunakan konektor Paimon dalam job SQL sebagai tabel sumber atau tabel sink.
Sintaks
-
Jika Anda membuat tabel Paimon di Paimon Catalog, Anda tidak perlu menentukan parameter
connector. Sintaksnya sebagai berikut:CREATE TABLE `<YOUR-PAIMON-CATALOG>`.`<YOUR-DB>`.paimon_table ( id BIGINT, data STRING, PRIMARY KEY (id) NOT ENFORCED ) WITH ( ... );CatatanJika Anda telah membuat tabel Paimon di Paimon Catalog, Anda dapat langsung menggunakannya.
-
Jika Anda membuat tabel temporary Paimon di Catalog lain, Anda harus menentukan parameter 'connector' dan 'path'. Sintaksnya sebagai berikut:
CREATE TEMPORARY TABLE paimon_table ( id BIGINT, data STRING, PRIMARY KEY (id) NOT ENFORCED ) WITH ( 'connector' = 'paimon', 'path' = '<path-to-paimon-table-files>', 'auto-create' = 'true', -- Jika file data tabel Paimon tidak ada di path yang ditentukan, file tersebut akan dibuat secara otomatis. ... );Catatan-
Contoh path:
'path' = 'oss://<bucket>/test/order.db/orders'. Jangan menghilangkan akhiran.db. Paimon mengandalkan akhiran ini untuk mengidentifikasi database. -
Beberapa job yang menulis ke tabel yang sama harus menggunakan konfigurasi path yang sama.
-
Jika dua konfigurasi path berbeda, Paimon tidak menganggapnya sebagai tabel yang sama. Bahkan jika path fisiknya sama, konfigurasi Catalog yang tidak konsisten dapat menyebabkan konflik penulisan konkuren, kegagalan operasi compact, dan kehilangan data. Misalnya, Paimon menganggap
oss://b/testdanoss://b/test/sebagai tabel yang berbeda karena adanya garis miring di akhir, meskipun keduanya mungkin mengarah ke lokasi fisik yang sama.
-
Parameter WITH
|
Parameter |
Deskripsi |
Tipe |
Wajib |
Default |
Keterangan |
|
connector |
Menentukan konektor untuk tabel. |
String |
Tidak |
Tidak ada |
|
|
path |
Path penyimpanan tabel. |
String |
Tidak |
Tidak ada |
|
|
auto-create |
Menentukan apakah akan membuat file tabel secara otomatis jika file tersebut tidak ada di path yang ditentukan. |
Boolean |
Tidak |
false |
Nilai yang valid:
|
|
file.format |
Format file data. |
String |
Tidak |
parquet |
Nilai yang valid:
|
|
bucket |
Jumlah bucket per partisi. |
Integer |
Tidak |
1 |
Paimon mendistribusikan data ke bucket berdasarkan Catatan
Kami merekomendasikan agar setiap bucket berisi kurang dari 5 GB data. |
|
bucket-key |
Kolom yang digunakan sebagai kunci bucket. |
String |
Tidak |
Tidak ada |
Menentukan kolom yang digunakan untuk mendistribusikan data ke bucket. Pisahkan beberapa nama kolom dengan koma (,). Contohnya, Catatan
|
|
changelog-producer |
Mekanisme produksi changelog. |
String |
Tidak |
none |
Paimon dapat menghasilkan changelog lengkap untuk aliran input apa pun, artinya setiap catatan
Untuk informasi lebih lanjut tentang cara memilih produsen changelog, lihat Produksi Changelog. |
|
full-compaction.delta-commits |
Jumlah maksimum commit antara dua full compaction berturut-turut. |
Integer |
Tidak |
Tidak ada |
Menentukan jumlah maksimum commit snapshot yang diizinkan sebelum memicu full compaction. |
|
lookup.cache-max-memory-size |
Ukuran cache memori untuk tabel dimensi Paimon. |
String |
Tidak |
256 MB |
Parameter ini mengontrol ukuran cache baik untuk lookup tabel dimensi maupun produsen changelog |
|
merge-engine |
Mekanisme penggabungan catatan dengan kunci primer yang sama. |
String |
Tidak |
deduplicate |
Nilai yang valid:
Untuk analisis mendetail tentang mesin merge, lihat Mesin Merge. |
|
partial-update.ignore-delete |
Menentukan apakah akan mengabaikan pesan delete (-D). |
Boolean |
Tidak |
false |
Nilai yang valid:
Catatan
|
|
ignore-delete |
Menentukan apakah akan mengabaikan pesan delete (-D). |
Boolean |
Tidak |
false |
Nilai yang valid sama dengan nilai untuk partial-update.ignore-delete. Catatan
|
|
partition.default-name |
Nama partisi default. |
String |
Tidak |
__DEFAULT_PARTITION__ |
Nama partisi yang digunakan ketika nilai kolom partisi adalah null atau string kosong. |
|
partition.expiration-check-interval |
Seberapa sering sistem memeriksa partisi yang kedaluwarsa. |
String |
Tidak |
1h |
Untuk detailnya, lihat Cara mengonfigurasi kedaluwarsa partisi otomatis. |
|
partition.expiration-time |
Durasi setelah partisi kedaluwarsa. |
String |
Tidak |
Tidak ada |
Partisi kedaluwarsa ketika usianya melebihi nilai ini. Secara default, partisi tidak pernah kedaluwarsa. Sistem menghitung usia partisi dari nilai partisinya. Untuk detailnya, lihat Cara mengonfigurasi kedaluwarsa partisi otomatis. |
|
partition.timestamp-formatter |
String format untuk mengonversi string waktu menjadi timestamp. |
String |
Tidak |
Tidak ada |
Menentukan format untuk mengekstraksi usia partisi dari nilai partisi. Untuk detailnya, lihat Cara mengonfigurasi kedaluwarsa partisi otomatis. |
|
partition.timestamp-pattern |
String format untuk mengonversi nilai partisi menjadi string waktu. |
String |
Tidak |
Tidak ada |
Menentukan pola untuk mengekstraksi string waktu dari nilai partisi. Untuk detailnya, lihat Cara mengonfigurasi kedaluwarsa partisi otomatis. |
|
scan.bounded.watermark |
Nilai watermark yang menandai akhir pemindaian. Tabel sumber berhenti menghasilkan data ketika watermark-nya melebihi nilai ini. |
Long |
Tidak |
Tidak ada |
Tidak berlaku |
|
scan.mode |
Menentukan posisi konsumsi untuk tabel sumber Paimon. |
String |
Tidak |
default |
Untuk detailnya, lihat Cara mengatur posisi konsumsi untuk tabel sumber Paimon. |
|
scan.snapshot-id |
Menentukan snapshot tempat tabel sumber Paimon mulai mengonsumsi. |
Integer |
Tidak |
Tidak ada |
Untuk detailnya, lihat Cara mengatur posisi konsumsi untuk tabel sumber Paimon. |
|
scan.timestamp-millis |
Menentukan titik waktu tempat tabel sumber Paimon mulai mengonsumsi. |
Integer |
Tidak |
Tidak ada |
Untuk detailnya, lihat Cara mengatur posisi konsumsi untuk tabel sumber Paimon. |
|
snapshot.num-retained.max |
Jumlah maksimum snapshot terbaru yang dipertahankan. |
Integer |
Tidak |
2147483647 |
Kedaluwarsa snapshot dipicu jika salah satu kondisi ini atau kondisi |
|
snapshot.num-retained.min |
Jumlah minimum snapshot terbaru yang dipertahankan. |
Integer |
Tidak |
10 |
Tidak berlaku |
|
snapshot.time-retained |
Periode retensi untuk snapshot. |
String |
Tidak |
1h |
Kedaluwarsa snapshot dipicu jika salah satu kondisi ini atau kondisi |
|
write-mode |
Mode penulisan untuk tabel Paimon. |
String |
Tidak |
change-log |
Nilai yang valid:
Untuk informasi lebih lanjut tentang mode penulisan, lihat Mode Penulisan. |
|
scan.infer-parallelism |
Menentukan apakah akan secara otomatis menginferensi parallelisme untuk tabel sumber Paimon. |
Boolean |
Tidak |
true |
Nilai yang valid:
|
|
scan.parallelism |
Parallelisme untuk tabel sumber Paimon. |
Integer |
Tidak |
Tidak ada |
Catatan
Parameter ini diabaikan jika expert mode diatur ke expert mode pada tab job. |
|
sink.parallelism |
Parallelisme untuk tabel sink Paimon. |
Integer |
Tidak |
Tidak ada |
Catatan
Parameter ini diabaikan jika expert mode diatur ke expert mode pada tab job. |
|
sink.clustering.by-columns |
Menentukan kolom clustering untuk menulis ke tabel sink Paimon. |
String |
Tidak |
Tidak ada |
Untuk tabel append-only Paimon (tabel tanpa kunci primer), parameter ini mengaktifkan penulisan terkluster dalam job batch. Proses ini meningkatkan performa kueri dengan mengelompokkan data berdasarkan kolom yang ditentukan. Pisahkan beberapa nama kolom dengan koma (,), contohnya Untuk informasi lebih lanjut tentang clustering, lihat Dokumentasi Resmi Apache Paimon. |
|
sink.delete-strategy |
Menentukan strategi validasi untuk memastikan sistem menangani pesan retraksi (-D/-U) dengan benar. |
Enum |
Tidak |
NONE |
Nilai yang valid dan perilaku yang diharapkan dari operator sink saat menangani pesan retraksi:
Catatan
|
Untuk informasi lebih lanjut tentang opsi konfigurasi, lihat Dokumentasi Resmi Apache Paimon.
Detail fitur
Freshness dan konsistensi data
Tabel sink Paimon menggunakan protokol two-phase commit untuk meng-commit data selama setiap checkpoint job Flink. Oleh karena itu, freshness data ditentukan oleh interval checkpoint job Flink. Setiap commit menghasilkan hingga dua snapshot.
Saat dua job Flink menulis ke tabel Paimon yang sama secara konkuren, jika job tersebut menulis ke bucket yang berbeda, mereka mencapai konsistensi serializable. Jika job tersebut menulis ke bucket yang sama, mereka hanya mencapai isolasi snapshot. Artinya, data tabel mungkin merupakan campuran hasil dari kedua job tersebut, tetapi tidak terjadi kehilangan data.
Merge engine
Saat tabel sink Paimon menerima beberapa catatan dengan kunci primer yang sama, tabel tersebut menggabungkannya menjadi satu catatan untuk menjaga keunikan. Anda dapat mengontrol perilaku ini dengan mengatur parameter merge-engine. Tabel berikut menjelaskan mesin merge yang tersedia.
|
Mesin merge |
Deskripsi |
|
Deduplicate |
Mesin deduplikasi adalah default. Untuk beberapa catatan dengan kunci primer yang sama, tabel sink Paimon hanya menyimpan catatan terbaru dan membuang yang lainnya. Catatan
Jika catatan terbaru adalah pesan delete, semua catatan dengan kunci primer tersebut dibuang. |
|
Partial Update |
Mesin partial update memungkinkan Anda membangun catatan lengkap dengan memperbaruinya secara inkremental menggunakan beberapa pesan. Saat catatan baru dengan kunci primer yang sama tiba, nilai non-null-nya menimpa bidang yang sesuai dalam catatan yang ada. Mesin ini mengabaikan bidang yang bernilai null dalam catatan baru dan mempertahankan nilai yang ada. Sebagai contoh, asumsikan tabel sink Paimon menerima tiga catatan berikut secara berurutan:
Jika kolom pertama adalah kunci primer, catatan gabungan akhirnya adalah <1, 25.2, 10, 'This is a book'>. Catatan
|
|
Aggregation |
Dalam beberapa kasus penggunaan, Anda mungkin hanya memerlukan nilai agregat catatan. Mesin agregasi menggabungkan catatan yang memiliki kunci primer yang sama dengan menggunakan fungsi agregat yang Anda tentukan. Untuk setiap kolom non-kunci-primer, Anda harus menentukan fungsi agregat menggunakan opsi
Kolom
Catatan
|
Produsen changelog
Atur parameter changelog-producer untuk mengonfigurasi Paimon agar menghasilkan changelog lengkap (di mana setiap catatan update_after memiliki catatan update_before yang sesuai) untuk aliran input apa pun. Tabel berikut menjelaskan produsen changelog yang tersedia. Untuk detail lebih lanjut, lihat dokumentasi resmi Apache Paimon.
|
Produsen |
Deskripsi |
|
None |
Saat Anda mengatur Sebagai contoh, jika konsumen downstream perlu menghitung jumlah suatu kolom dan hanya melihat nilai terbaru 5, konsumen tersebut tidak dapat menentukan cara memperbarui total. Jika nilai sebelumnya adalah 4, jumlah harus bertambah 1; jika nilai sebelumnya adalah 6, jumlah harus berkurang 1. Konsumen yang sensitif terhadap catatan Catatan
Jika konsumen downstream Anda, seperti database, tidak sensitif terhadap data |
|
Input |
Saat Anda mengatur Gunakan produsen ini hanya ketika aliran input itu sendiri sudah merupakan changelog lengkap, seperti data dari Change Data Capture (CDC). |
|
Lookup |
Saat Anda mengatur Dibandingkan dengan produsen Gunakan opsi ini untuk kasus penggunaan yang memerlukan freshness data tinggi (misalnya, tingkat menit). |
|
Full Compaction |
Saat Anda mengatur Dibandingkan dengan produsen Gunakan opsi ini untuk kasus penggunaan dengan persyaratan freshness data rendah (misalnya, per jam). |
Mode penulisan
Tabel Paimon mendukung mode penulisan berikut.
|
Mode |
Deskripsi |
|
Change-log |
Mode penulisan |
|
Append-only |
Mode penulisan Untuk deskripsi mendetail tentang mode penulisan
|
Target untuk CTAS dan CDAS
Tabel Paimon mendukung sinkronisasi data real-time untuk tabel tunggal atau seluruh database. Perubahan skema di tabel upstream juga disinkronkan ke tabel Paimon secara real-time. Untuk detailnya, lihat Mengelola tabel Paimon dan Mengelola Paimon Catalog.
Pemangkasan baca Variant
Hanya membaca bidang Variant yang direferensikan oleh kueri, mengurangi overhead I/O dan memori.
Cara mengaktifkan
|
Parameter |
Nilai default |
Deskripsi |
|
|
false |
Atur ke |
Prasyarat
Data Variant harus ditulis oleh versi saat ini. Data Variant yang ditulis oleh versi sebelumnya atau mesin lain tidak mendukung pemangkasan baca.
Skenario yang didukung
Pemangkasan baca berlaku saat SQL mengakses bidang Variant dengan kunci string, misalnya:
SELECT v['a'] FROM t; -- Satu level
SELECT v['a']['b'] FROM t; -- Bersarang
SELECT v['a'], v['b'] FROM t; -- Beberapa bidang
SELECT id, v['a'] FROM t; -- Dicampur dengan kolom biasa
SELECT v['a'] + 1 FROM t; -- Direferensikan dalam ekspresi
Skenario yang tidak didukung
-
Mereferensikan seluruh Variant secara langsung, seperti
SELECT v FROM t. -
Menggabungkan referensi langsung dengan akses bidang, seperti
SELECT v, v['a'] FROM t. -
Akses indeks array, seperti
v[0]. -
Skema tabel berisi bidang Row bersarang. Dalam kasus ini, pemangkasan baca tidak berlaku untuk bidang Variant apa pun di tabel.
Gunakan Paimon sebagai tabel dimensi
Tabel Paimon dapat digunakan sebagai tabel dimensi. Untuk sintaks JOIN, lihat Pernyataan JOIN tabel dimensi.
Secara default, lookup memuat semua data di setiap instans paralel. Pendekatan ini hanya cocok untuk tabel dimensi kecil. Untuk tabel dimensi besar, gunakan solusi Shuffle Lookup yang dijelaskan di bawah.
Tabel dimensi terpartisi
Jika tabel dimensi Anda terpartisi dan Anda hanya memerlukan data dari satu atau dua partisi terbaru, Anda dapat menggunakan fitur pemuatan partisi dinamis:
SELECT * FROM T
JOIN DIM /*+ OPTIONS('lookup.dynamic-partition'='max_pt()', 'lookup.dynamic-partition.refresh-interval'='1 h') */
FOR SYSTEM_TIME AS OF T.proc_time AS D
ON T.col = D.col;
|
Parameter |
Tipe data |
Nilai default |
Deskripsi |
|
lookup.dynamic-partition |
String |
T/A |
|
|
lookup.dynamic-partition.refresh-interval |
Durasi |
1 h |
Interval sistem memeriksa pembaruan partisi di tabel dimensi. |
Tabel dimensi besar: tabel fixed-bucket
Hanya didukung di VVR 8.0.8 dan versi yang lebih baru. Untuk tabel fixed-bucket (bucket > 0), Anda dapat menggunakan Shuffle Lookup untuk mendistribusikan data berdasarkan kunci bucket ke instans paralel, sehingga setiap instans hanya memuat data di bucket yang ditugaskan:
SELECT /*+ LOOKUP('table'='D', 'shuffle'='true') */ T.col1, D.col2
FROM T
JOIN DIM FOR SYSTEM_TIME AS OF T.proc_time AS D
ON T.col1 = D.col1;
-
Kunci join harus merupakan kunci bucket. Kunci bucket secara default adalah kunci primer.
-
Hanya tabel fixed-bucket (bucket > 0) yang mendukung fitur ini.
Tabel dimensi besar: tabel non-fixed-bucket
Hanya didukung di VVR 8.0.10 dan versi yang lebih baru. Untuk tabel dynamic-bucket atau tabel append, Anda dapat menggunakan SHUFFLE_HASH atau REPLICATED_SHUFFLE_HASH sehingga setiap instans paralel membaca semua data tetapi hanya menyimpan bagian yang dibutuhkan:
-- Shuffle Hash
SELECT /*+ SHUFFLE_HASH(D) */ T.col1, D.col2
FROM T
JOIN DIM FOR SYSTEM_TIME AS OF T.proc_time AS D
ON T.col1 = D.col1;
-- Replicated Shuffle Hash
SELECT /*+ REPLICATED_SHUFFLE_HASH(D) */ T.col1, D.col2
FROM T
JOIN DIM FOR SYSTEM_TIME AS OF T.proc_time AS D
ON T.col1 = D.col1;
Untuk informasi lebih lanjut tentang SHUFFLE_HASH dan REPLICATED_SHUFFLE_HASH, lihat Pernyataan JOIN tabel dimensi.
Ingesti Data
Anda dapat menggunakan konektor Paimon sebagai sink dalam job Ingesti Data YAML.
Sintaks
sink:
type: paimon
name: Paimon Sink
catalog.properties.metastore: filesystem
catalog.properties.warehouse: /path/warehouse
Parameter
|
Parameter |
Deskripsi |
Wajib |
Tipe |
Default |
Catatan |
|
type |
Tipe konektor. |
Ya |
STRING |
Tidak ada |
Nilainya harus |
|
name |
Nama sink. |
Tidak |
STRING |
Tidak ada |
|
|
catalog.properties.metastore |
Tipe katalog Paimon. |
Tidak |
STRING |
filesystem |
Nilai yang valid:
|
|
catalog.properties.* |
Parameter untuk membuat katalog Paimon. |
Tidak |
STRING |
Tidak ada |
Untuk informasi lebih lanjut, lihat Mengelola Paimon Catalog. |
|
table.properties.* |
Parameter untuk membuat tabel Paimon. |
Tidak |
STRING |
Tidak ada |
Untuk informasi lebih lanjut, lihat Opsi tabel Paimon. |
|
catalog.properties.warehouse |
Direktori root untuk penyimpanan file. |
Tidak |
STRING |
Tidak ada |
Parameter ini hanya berlaku saat |
|
commit.user-prefix |
Awalan username untuk meng-commit file data. |
Tidak |
STRING |
Tidak ada |
Catatan
Kami merekomendasikan menetapkan username berbeda untuk job berbeda. Hal ini memudahkan identifikasi job yang menyebabkan konflik commit. |
|
partition.key |
Kunci partisi untuk tabel terpartisi. |
Tidak |
STRING |
Tidak ada |
Tabel berbeda dipisahkan dengan |
|
sink.cross-partition-upsert.tables |
Daftar tabel yang memerlukan cross-partition upsert, di mana kunci primer tidak mencakup semua kunci partisi. |
Tidak |
STRING |
Tidak ada |
Penting
|
|
sink.commit.parallelism |
Menentukan parallelisme operator Commit. |
Tidak |
INTEGER |
Tidak ada |
Jika operator Commit menjadi bottleneck, gunakan parameter ini untuk meningkatkan parallelism-nya dan meningkatkan performa. Parameter ini hanya didukung di Realtime Compute for Apache Flink 11.6 dan versi yang lebih baru. Catatan
Menyetel parameter ini mengubah parallelisme operator. Saat me-restart job stateful, Anda harus menentukan |
Gunakan katalog yang sudah ada
Mulai dari Realtime Compute for Apache Flink 11.5, Anda dapat langsung mereferensikan katalog Paimon bawaan dari halaman Data Management dalam job Ingesti Data Flink CDC. Hal ini mengurangi konfigurasi manual.
sink:
type: paimon
using.built-in-catalog: paimon_dlf_catalog
catalog.properties.fs.oss.endpoint: oss-cn-beijing-internal.aliyuncs.com
Job Ingesti Data dapat secara otomatis menggunakan kembali semua parameter dalam katalog Paimon. Hal ini setara dengan mengonfigurasi secara manual parameter yang diawali dengan catalog.properties. dalam job YAML.
Untuk meng-override parameter yang digunakan kembali secara otomatis, atur secara eksplisit dalam job YAML. Konfigurasi YAML eksplisit memiliki prioritas lebih tinggi. Sebagai contoh, dalam contoh di atas, parameter fs.oss.endpoint menggunakan nilai dari job YAML, meng-override nilai di paimon_dlf_catalog.
Contoh
Saat menggunakan Paimon sebagai sink Ingesti Data, rujuk contoh berikut untuk mengonfigurasi job berdasarkan tipe katalog Paimon Anda.
-
Contoh konfigurasi untuk menulis ke Object Storage Service (OSS) dengan katalog Paimon
filesystem:source: type: mysql name: MySQL Source hostname: ${secret_values.mysql.hostname} port: ${mysql.port} username: ${secret_values.mysql.username} password: ${secret_values.mysql.password} tables: ${mysql.source.table} server-id: 8601-8604 sink: type: paimon name: Paimon Sink catalog.properties.metastore: filesystem catalog.properties.warehouse: oss://default/test catalog.properties.fs.oss.endpoint: oss-cn-beijing-internal.aliyuncs.com catalog.properties.fs.oss.accessKeyId: xxxxxxxx catalog.properties.fs.oss.accessKeySecret: xxxxxxxxUntuk informasi tentang parameter yang diawali dengan
catalog.properties, lihat Membuat Katalog Filesystem Paimon. -
Contoh konfigurasi untuk menulis ke Data Lake Formation (DLF) dengan katalog Paimon
rest:source: type: mysql name: MySQL Source hostname: ${secret_values.mysql.hostname} port: ${mysql.port} username: ${secret_values.mysql.username} password: ${secret_values.mysql.password} tables: ${mysql.source.table} server-id: 8601-8604 sink: type: paimon name: Paimon Sink catalog.properties.metastore: rest catalog.properties.uri: dlf_uri catalog.properties.warehouse: your_warehouse catalog.properties.token.provider: dlf # (Opsional) Aktifkan deletion vectors untuk meningkatkan performa baca. table.properties.deletion-vectors.enabled: trueUntuk informasi tentang parameter yang diawali dengan
catalog.properties, lihat Parameter Konfigurasi Katalog Flink CDC.
Perubahan Skema
Saat digunakan sebagai sink Ingesti Data, Paimon mendukung event perubahan skema berikut:
-
CREATE TABLE EVENT
-
ADD COLUMN EVENT
-
ALTER COLUMN TYPE EVENT (Mengubah tipe data kolom kunci primer tidak didukung.)
-
RENAME COLUMN EVENT
-
DROP COLUMN EVENT
-
TRUNCATE TABLE EVENT
-
DROP TABLE EVENT
Jika tabel Paimon downstream sudah ada, job menulis ke skema yang ada dan tidak mencoba membuat tabel lagi.
FAQ
-
Mengapa job Paimon gagal dengan "Heartbeat of TaskManager timed out"?
-
Mengapa job Paimon gagal dengan "Sink materializer must not be used with Paimon sink"?
-
Mengapa job Paimon gagal dengan "File deletion conflicts detected" atau "LSM conflicts detected"?
-
Mengapa job Paimon gagal dengan "File xxx not found, Possible causes"?
-
Apakah visibilitas data konektor Paimon terkait dengan interval checkpoint?