Realtime Compute for Apache Flink, verileri bir kaynaktan hedefe senkronize etmek için YAML dosyası kullanarak Flink CDC veri alımı işleri oluşturmanıza olanak tanır. Bu konu, Flink CDC veri alımı işi geliştirmenin adımlarını açıklar.
Arka Plan
YAML yapılandırmaları kullanarak, otomatik olarak Flink yürütme mantığına dönüştürülen karmaşık ETL işlem hatlarını kolayca tanımlayabilirsiniz. Flink CDC veri alımı, Flink CDC tabanlı güçlü bir veri entegrasyonu çözümü sunar. Bu çözüm; tüm veritabanı senkronizasyonunu, tek tablo senkronizasyonunu, bölümlenmiş veritabanları ve tabloların senkronizasyonunu, yeni tabloların otomatik keşfini, şema değişikliği işlemeyi ve özel hesaplanan sütunları verimli bir şekilde destekler. Ayrıca ETL işlemeyi, WHERE yan tümcesi filtrelemeyi ve sütun budamayı destekler. Bu bildirim temelli yaklaşım, veri entegrasyonu sürecini önemli ölçüde basitleştirir; verimlilik ve güvenilirliği artırır.
Flink CDC'nin Avantajları
Realtime Compute for Apache Flink'te veri senkronizasyonu yapmak için Flink CDC veri alımı işi, SQL işi veya DataStream işi geliştirebilirsiniz. Aşağıdaki bölümlerde, diğer iki seçeneğe kıyasla Flink CDC veri alımı işi kullanmanın avantajları açıklanmaktadır.
Flink CDC ile Flink SQL Karşılaştırması
Flink CDC veri alımı işleri ve SQL işleri, veri aktarımı için farklı veri türleri kullanır:
SQL işleri verileri
RowDataolarak iletir. HerRowDatanesnesinin kendi değişiklik türü vardır; bu türler ekleme (+I), güncelleme öncesi (-U), güncelleme sonrası (+U) ve silme (-D) olmak üzere dört ana kategoriden oluşur.Flink CDC, tablo oluşturma, sütun ekleme veya tabloyu boşaltma gibi şema değişikliği bilgilerini iletmek için
SchemaChangeEventkullanır. Ekleme, güncelleme ve silme gibi veri değişikliklerini iletmek için iseDataChangeEventkullanır. Bir güncelleme mesajı hem önceki hem de sonraki içeriği içerdiğinden orijinal değişiklik verisini hedefe yazabilirsiniz.
Aşağıdaki tabloda, SQL işlerine kıyasla Flink CDC veri alımı işlerinin avantajları listelenmiştir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CTAS/CDAS ifadelerine kıyasla Flink CDC işleri aşağıdakiler dahil daha güçlü özellikler sunar:
Yukarı akış şema değişikliklerini anında senkronize eder; senkronizasyonun tetiklenmesi için yeni veri yazılmalarını beklemeye gerek kalmaz.
Orijinal değişiklik günlüğünü korur; böylece güncelleme mesajları bölünmez.
TRUNCATE TABLEveDROP TABLEgibi daha fazla şema değişikliği türünü senkronize eder.Esnek tablo eşleme ve hedef tablo adlarının tanımlanmasını sağlar.
Esnek ve yapılandırılabilir şema evrimi davranışları sunar.
WHEREyan tümceleri kullanarak veri filtrelemeyi destekler.Sütun budamayı destekler.
Flink CDC ile Flink DataStream Karşılaştırması
Aşağıdaki tabloda, DataStream işlerine kıyasla Flink CDC veri alımı işlerinin avantajları listelenmiştir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Sınırlamalar
Flink CDC veri alımı işlerini geliştirmek için Ververica Runtime (VVR) 11,1 veya sonraki bir sürümü kullanın. VVR 8.x kullanmanız gerekiyorsa VVR 8.0.11 sürümünü kullanın.
Her iş yalnızca bir kaynak ve bir hedefi destekler. Birden çok kaynaktan okumak veya birden çok hedefe yazmak için birden çok Flink CDC işi oluşturmanız gerekir.
Flink CDC işleri bir oturum kümesine dağıtılamaz.
Flink CDC veri alımı işleri otomatik ayarlamayı desteklemez.
Flink CDC veri alımı bağlayıcıları
Flink CDC veri alımı için desteklenen kaynak ve hedef bağlayıcılarla ilgili ayrıntılar için bkz. Desteklenen bağlayıcılar.
Flink CDC veri alımı işi oluşturma
Şablondan
Realtime Compute for Apache Flink konsolu üzerinde oturum açın.
Hedef çalışma alanının Actions sütununda Console öğesini tıklayın.
Sol gezinme bölmesinde seçeneğini belirleyin.
simgesini tıklayın ve ardından New Draft with Template öğesini tıklayın.-
Bir veri senkronizasyon şablonu seçin.
Şu anda yalnızca MySQL to StarRocks, MySQL to Paimon ve MySQL to Hologres şablonları kullanılabilir durumdadır.
OK gibi iş bilgilerini, location bilgisini ve engine version bilgisini girin ve ardından OK düğmesini tıklayın.
-
Flink CDC işi için kaynak ve hedef bilgilerini yapılandırın.
Parametre yapılandırma ayrıntıları için ilgili bağlayıcılara ilişkin belgelere bakın.
CTAS/CDAS işinden
Bir iş birden çok CXAS ifadesi içeriyorsa Flink yalnızca ilk ifadeyi algılar ve dönüştürür.
Flink SQL ve Flink CDC arasındaki yerleşik işlev desteği farklarından dolayı oluşturulan
transformkuralları olduğu gibi çalışmayabilir. Bunları gözden geçirmeniz ve gerektiğinde ayarlamanız gerekir.Kaynak MySQL ise ve orijinal bir CTAS/CDAS işi hala çalışıyorsa çakışmaları önlemek için Flink CDC veri alımı işindeki kaynak
server-iddeğerini ayarlamanız gerekir.
Realtime Compute for Apache Flink konsolu üzerinde oturum açın.
Hedef çalışma alanının Actions sütununda Console öğesini tıklayın.
Sol gezinme bölmesinde seçeneğini belirleyin.
-
simgesini tıklayın ve ardından New Draft from CTAS/CDAS seçeneğini belirleyin. Hedef CTAS veya CDAS işini seçin ve ardından OK düğmesini tıklayın.Seçim sayfasında sistem yalnızca geçerli CTAS ve CDAS işlerini görüntüler. Normal ETL işleri ve sözdizimi hataları içeren taslaklar görüntülenmez.
OK gibi iş bilgilerini, location bilgisini ve engine version bilgisini girin ve ardından OK düğmesini tıklayın.
Açık kaynaklı Flink CDC'den
Realtime Compute for Apache Flink konsolu üzerinde oturum açın.
Hedef çalışma alanının Actions sütununda Console öğesini tıklayın.
Sol gezinme bölmesinde seçeneğini belirleyin.
simgesini tıklayın ve ardından New Draft seçeneğini belirleyin. name ve engine version bilgilerini girin ve ardından Create düğmesini tıklayın.Açık kaynaklı Flink CDC işinizden alınan YAML kodunu düzenleyiciye yapıştırın.
-
(İsteğe bağlı) Validate düğmesini tıklayın.
Bu seçenek sözdizimi hatalarını, ağ bağlantısı sorunlarını ve izin sorunlarını denetler.
Sıfırdan
Realtime Compute for Apache Flink konsolu üzerinde oturum açın.
Hedef çalışma alanının Actions sütununda Console öğesini tıklayın.
Sol gezinme bölmesinde seçeneğini belirleyin.
simgesini tıklayın ve ardından New Draft seçeneğini belirleyin. name ve engine version bilgilerini girin ve ardından Create düğmesini tıklayın.-
Flink CDC işini YAML kullanarak yapılandırın. Örnek:
# Required source: # The type of the data source. type: <Replace with your source connector type> # The configuration for the data source. For details about configuration items, see the documentation for the corresponding connector. ... # Required sink: # The type of the sink. type: <Replace with your sink connector type> # The configuration for the sink. For details about configuration items, see the documentation for the corresponding connector. ... # Optional transform: # A transform rule for the flink_test.customers table. - source-table: flink_test.customers # Projection configuration. Specifies the columns to synchronize and performs data transformations. projection: id, username, UPPER(username) as username1, age, (age + 1) as age1, test_col1, __schema_name__ || '.' || __table_name__ identifier_name # Filter condition. Synchronizes only data where id is greater than 10. filter: id > 10 # Description of the transform rule. description: append calculated columns based on source table # Optional route: # A route rule that specifies the mapping between the source table and the sink table. - source-table: flink_test.customers sink-table: db.customers_o # Description of the route rule. description: sync customers table - source-table: flink_test.customers_suffix sink-table: db.customers_s # Description of the route rule. description: sync customers_suffix table # Optional pipeline: # The name of the job. name: MySQL to Hologres PipelineNotBir Flink CDC işinde bir anahtarı ve değerini iki nokta üst üste ve bir boşlukla ayırın. Format
Key: Valueşeklindedir.Aşağıdaki tabloda kod blokları açıklanmaktadır.
Gerekli
Modül
Açıklama
Evet
source
Veri işlem hattının başlangıç noktası. Flink CDC, kaynaktaki değişiklik verilerini yakalar.
Not-
Şu anda desteklenen tek kaynak MySQL'dir. Belirli yapılandırma ayrıntıları için bkz. MySQL bağlayıcısı.
-
Hassas bilgileri yönetmek için değişkenleri kullanabilirsiniz. Daha fazla bilgi için bkz. Değişken Yönetimi.
sink
Veri işlem hattının bitiş noktası. Flink CDC, yakalanan veri değişikliklerini hedef sisteme iletir.
Not-
Desteklenen hedefler hakkında bilgi için bkz. Flink CDC veri alımı bağlayıcıları. Yapılandırma ayrıntıları için belirli bağlayıcıya ilişkin belgelere bakın.
-
Hassas bilgileri yönetmek için değişkenleri kullanabilirsiniz. Daha fazla bilgi için bkz. Değişken Yönetimi.
Hayır
pipeline
(veri işlem hattı)
İşlem hattı adı gibi tüm veri işlem hattı işi için temel yapılandırmaları tanımlar.
transform
Flink işlem hattından akarken veriler üzerinde işlem yapmak için veri dönüşüm kurallarını belirtir. ETL işlemeyi,
WHEREyan tümcesi filtrelemeyi, sütun budamayı ve hesaplanan sütunları destekler.Flink CDC tarafından yakalanan ham değişiklik verilerini belirli aşağı akış sistemlerine uygun hale getirmek için dönüşüm uygulamanız gerekiyorsa
transformbloğunu kullanın.route
Bu modül yapılandırılmazsa iş varsayılan olarak tam veritabanı veya hedef tablo senkronizasyonu gerçekleştirir.
Bazı durumlarda yakalanan değişiklik verilerini belirli kurallara göre farklı hedeflere göndermeniz gerekebilir.
routemodülü, kaynak ve hedef arasındaki eşleme ilişkisini esnek bir şekilde belirtmenize ve verileri farklı hedeflere göndermenize olanak tanır.Her modülün sözdizimi ve yapılandırması hakkında daha fazla bilgi için bkz. Flink CDC veri alımı işleri için başvuru.
Aşağıdaki kod, MySQL'deki app_db veritabanındaki tüm tabloların Hologres'teki bir veritabanına senkronize edilmesine ilişkin bir örnek sağlar.
source: type: mysql hostname: <hostname> port: 3306 username: ${secret_values.mysqlusername} password: ${secret_values.mysqlpassword} tables: app_db.\.* server-id: 5400-5404 # (Optional) Synchronize data from tables newly created in the incremental phase. scan.binlog.newly-added-table.enabled: true # (Optional) Synchronize table and field comments. include-comments.enabled: true # (Optional) Prioritize dispatching unbounded chunks to prevent potential TaskManager OutOfMemory issues. scan.incremental.snapshot.unbounded-chunk-first.enabled: true # (Optional) Enable parsing filters to accelerate reading. scan.only.deserialize.captured.tables.changelog.enabled: true sink: type: hologres name: Hologres Sink endpoint: <endpoint> dbname: <database-name> username: ${secret_values.holousername} password: ${secret_values.holopassword} pipeline: name: Sync MySQL Database to Hologres -
-
(İsteğe bağlı) Validate düğmesini tıklayın.
Bu seçenek sözdizimi hatalarını, ağ bağlantısı sorunlarını ve izin sorunlarını denetler.
İlgili konular
Bir Flink CDC işini geliştirdikten sonra bunu dağıtmanız gerekir. Daha fazla bilgi için bkz. İş dağıtma.
MySQL veritabanından StarRocks'a veri senkronize etmek için hızlı bir şekilde bir Flink CDC işi oluşturmak üzere bkz. Öğretici: Flink CDC veri alımı işi oluşturma.