SeaTunnel JDBC DB2 Sink Connector支持的工作原理,快來學習吧!

来源:https://www.cnblogs.com/seatunnel/p/18146225
-Advertisement-
Play Games

DB2是IBM的一款關係型資料庫管理系統,JDBC DB2 Source Connector是一個用於通過JDBC讀取外部數據源數據的連接器。Apache SeaTunnel如何支持JDBC DB2 Sink Connector?請參考本文檔。 支持引擎 Spark Flink SeaTunnel ...


file
DB2是IBM的一款關係型資料庫管理系統,JDBC DB2 Source Connector是一個用於通過JDBC讀取外部數據源數據的連接器。Apache SeaTunnel如何支持JDBC DB2 Sink Connector?請參考本文檔。

支持引擎

Spark

Flink

SeaTunnel Zeta

主要功能

使用 Xa 事務 來確保 精確一次性。因此,只支持對支持 Xa 事務 的資料庫進行 精確一次性 操作。您可以設置 is_exactly_once=true 來啟用它。

描述

通過 JDBC 寫入數據。支持批處理模式和流式模式,支持併發寫入,支持精確一次性語義(使用 XA 事務保證)。

支持的數據源信息

數據源 支持的版本 驅動程式 URL Maven
DB2 不同的依賴版本有不同的驅動程式 com.ibm.db2.jdbc.app.DB2Driver jdbc:db2://127.0.0.1:50000/dbname 下載

資料庫依賴

請下載與 'Maven' 相對應的支持列表,並將其複製到 '$SEATNUNNEL_HOME/plugins/jdbc/lib/' 工作目錄中

例如,對於 DB2 數據源:cp db2-connector-java-xxx.jar $SEATNUNNEL_HOME/plugins/jdbc/lib/

數據類型映射

file

Sink 選項

名稱 類型 必填 預設值 描述
url 字元串 - JDBC 連接的 URL。例如:jdbc:db2://127.0.0.1:50000/dbname
driver 字元串 - 用於連接到遠程數據源的 JDBC 類名,如果使用 DB2,則值為 com.ibm.db2.jdbc.app.DB2Driver
user 字元串 - 連接實例的用戶名
password 字元串 - 連接實例的密碼
query 字元串 - 使用此 SQL 將上游輸入數據寫入資料庫。例如 INSERT ...query 具有更高的優先順序。
database 字元串 - 使用此 databasetable-name 自動生成 SQL,並接收上游輸入數據寫入資料庫。此選項與 query 互斥,並具有更高的優先順序。
table 字元串 - 使用資料庫和此表名自動生成 SQL,接收上游輸入數據寫入資料庫。此選項與 query 互斥,並具有更高的優先順序。
primary_keys 數組 - 此選項用於支持自動生成 SQL 時的 insertdeleteupdate 操作。
support_upsert_by_query_primary_key_exist 布爾 false 根據查詢主鍵是否存在選擇使用 INSERT SQL、UPDATE SQL 處理更新事件(INSERT、UPDATE_AFTER)。此配置僅在資料庫不支持 upsert 語法時使用。請註意,此方法性能較低。
connection_check_timeout_sec 整數 30 用於等待驗證連接的資料庫操作完成的時間(以秒為單位)。
max_retries 整數 0 提交失敗(executeBatch)的重試次數。
batch_size 整數 1000 用於批處理寫入,當緩衝記錄數量達到 batch_size 或時間達到 batch_interval_ms 時,數據將刷新到資料庫。
batch_interval_ms 整數 1000 用於批處理寫入,當緩衝記錄數量達到 batch_size 或時間達到 batch_interval_ms 時,數據將刷新到資料庫。
is_exactly_once 布爾 false 是否啟用精確一次性語義,將使用 XA 事務。如果啟用,需要設置 xa_data_source_class_name
generate_sink_sql 布爾 false 基於要寫入的資料庫表自動生成 SQL 語句。
xa_data_source_class_name 字元串 - 資料庫驅動程式的 XA 數據源類名,例如,DB2 為 com.db2.cj.jdbc.Db2XADataSource。其他數據源請參考附錄。
max_commit_attempts 整數 3 事務提交失敗的重試次數。
transaction_timeout_sec 整數 -1 事務打開後的超時時間,預設為 -1(永不超時)。請註意,設置超時可能會影響精確一次性語義。
auto_commit 布爾 true 預設啟用自動事務提交。
common-options - Sink 插件的通用參數,請參考 Sink Common Options 獲取詳細信息。

提示

如果未設置 partition_column,則將以單一併發方式運行;如果設置了 partition_column,則根據任務的併發度並行執行。

任務示例

簡單示例:

該示例定義了一個 SeaTunnel 同步任務,通過 FakeSource 自動生成數據併發送到 JDBC Sink。FakeSource 生成總共 16 行數據(row.num=16),每行有兩個欄位,name(字元串類型)和 age(整數類型)。最終的目標表是 test_table,在表中也將有 16 行數據。在運行此作業之前,您需要在您的 DB2 中創建資料庫 test 和表 test_table。如果您尚未安裝和部署 SeaTunnel,請按照 安裝 SeaTunnel 中的說明安裝和部署 SeaTunnel。然後按照 使用 SeaTunnel 引擎快速入門 中的說明運行此作業。

# 定義運行時環境
env {
  # 您可以在這裡設置 Flink 配置
  execution.parallelism = 1
  job.mode = "BATCH"
}

source {
  # 這是一個示例源插件,僅用於測試和演示源插件功能
  FakeSource {
    parallelism = 1
    result_table_name = "fake"
    row.num = 16
    schema = {
      fields {
        name = "string"
        age = "int"
      }
    }
  }
  # 如果您想要獲取更多關於如何配置 SeaTunnel 並查看完整的源插件列表的信息,
  # 請訪問 https://seatunnel.apache.org/docs/category/source-v2
}

transform {
  # 如果您想要獲取更多關於如何配置 SeaTunnel 並查看完整的轉換插件列表的信息,
  # 請訪問 https://seatunnel.apache.org/docs/category/transform-v2
}

生成 Sink SQL

該示例不需要編寫複雜的 SQL 語句,您可以配置資料庫名稱和表名稱,以自動生成要插入的語句。

sink {
    jdbc {
        url = "jdbc:db2://127.0.0.1:50000/dbname"
        driver = "com.ibm.db2.jdbc.app.DB2Driver"
        user = "root"
        password = "123456"
        query = "insert into test_table(name,age) values(?,?)"
        }
  #  如果您想要獲取更多關於如何配置 SeaTunnel 並查看完整的接收插件列表的信息,
  #  請訪問 https://seatunnel.apache.org/docs/category/sink-v2
}

sink {
    jdbc {
        url = "jdbc:db2://127.0.0.1:50000/dbname"
        driver = "com.ibm.db2.jdbc.app.DB2Driver"
        user = "root"
        password = "123456"
        # 根據資料庫表名自動生成 SQL 語句
        generate_sink_sql = true
        database = test
        table = test_table
    }
}

精確一次性:

為了確保精確寫入場景,我們保證精確一次性。
sink {
jdbc {
url = "jdbc:db2://127.0.0.1:50000/dbname"
driver = "com.ibm.db2.jdbc.app.DB2Driver"

    max_retries = 0
    user = "root"
    password = "123456"
    query = "insert into test_table(name,age) values(?,?)"

    is_exactly_once = "true"

    xa_data_source_class_name = "com.db2.cj.jdbc.Db2XADataSource"
}

}

本文由 白鯨開源 提供發佈支持!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 聲明: 以下為個人筆記,內容不完全正確,請謹慎參考。 while迴圈 while迴圈結構 while [條件判斷] do 程式 done 腳本示例: 點擊查看代碼 #!/bin/bash while [ $a -le $1] do sum=$[ $sum + $a ] done echo $sum ...
  • /******************************************************************************************************** * * 提高可移植性 Copyright (c) 2023-2024 cececlmx@ ...
  • 為什麼要使用操作系統 使用操作系統的主要原因是為了實現 CPU 多進程分時復用以及記憶體隔離 如果沒有操作系統,應用程式會直接與硬體進行交互,這時應用程式會直接使用 CPU,比如假設只有一個 CPU 核,一個應用程式在這個 CPU 核上運行,但是同時其他程式也需要運行,因為沒有操作系統來幫助切換,就需 ...
  • 系統函數: 1、簡單示例: 點擊查看代碼 #!/bin/bash filename="$1"_log_$(datename +%S) echo $filename basename: 基本語法: basename [string/pathname] [suffix] (功能描述:basename命令 ...
  • 在剛剛過去的2024春季發佈會上,袋鼠雲帶來了數棧產品V6.2版本的全新發佈。其中,EasyMR 作為數棧V6.2中的一項關鍵能力,代表了袋鼠雲對大數據生態的深入理解和持續創新。 EasyMR(後文統稱EMR)是袋鼠雲基於 Hadoop、Hive、Spark、Flink、HBase 等開源組件,構建 ...
  • 1.環境說明 1.1源端SQLSserver 版本 IP 埠 Microsoft SQL Server 2017 192.168.140.160 1433 1.2目標端GreatSQL 版本 IP 埠 GreatSQL-8.0.32 192.168.139.86 3308 2.安裝環境 2.1安 ...
  • 目錄一、什麼是redis Cluster集群二、集群架構圖三、redis Cluster部署架構1、測試環境2、生產環境四、原生命令手動部署Redis Cluster1、環境準備2、為所有節點啟用redis集群支持3、執行meet操作實現互相通信在任意一節點上和其它所有節點進行meet通信,以m1為 ...
  • 項目背景 數字金融是數字經濟的重要支撐和驅動力。近年來,我國針對數字金融的發展政策頻頻出台,《金融科技發展規劃 (2022-2025年)》、《“十四五”數字經濟發展規劃》、《關於銀行業保險業數字化轉型的指導意見》、《金融標準化“十 四五”發展規劃》等相繼發佈,頂層設計逐步完善。 2024年,政府工作 ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...