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
  • 概述:本文代碼示例演示瞭如何在WPF中使用LiveCharts庫創建動態條形圖。通過創建數據模型、ViewModel和在XAML中使用`CartesianChart`控制項,你可以輕鬆實現圖表的數據綁定和動態更新。我將通過清晰的步驟指南包括詳細的中文註釋,幫助你快速理解並應用這一功能。 先上效果: 在 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • 概述:本示例演示了在WPF應用程式中實現多語言支持的詳細步驟。通過資源字典和數據綁定,以及使用語言管理器類,應用程式能夠在運行時動態切換語言。這種方法使得多語言支持更加靈活,便於維護,同時提供清晰的代碼結構。 在WPF中實現多語言的一種常見方法是使用資源字典和數據綁定。以下是一個詳細的步驟和示例源代 ...
  • 描述(做一個簡單的記錄): 事件(event)的本質是一個委托;(聲明一個事件: public event TestDelegate eventTest;) 委托(delegate)可以理解為一個符合某種簽名的方法類型;比如:TestDelegate委托的返回數據類型為string,參數為 int和 ...
  • 1、AOT適合場景 Aot適合工具類型的項目使用,優點禁止反編 ,第一次啟動快,業務型項目或者反射多的項目不適合用AOT AOT更新記錄: 實實在在經過實踐的AOT ORM 5.1.4.117 +支持AOT 5.1.4.123 +支持CodeFirst和非同步方法 5.1.4.129-preview1 ...
  • 總說周知,UWP 是運行在沙盒裡面的,所有許可權都有嚴格限制,和沙盒外交互也需要特殊的通道,所以從根本杜絕了 UWP 毒瘤的存在。但是實際上 UWP 只是一個應用模型,本身是沒有什麼許可權管理的,許可權管理全靠 App Container 沙盒控制,如果我們脫離了這個沙盒,UWP 就會放飛自我了。那麼有沒... ...
  • 目錄條款17:讓介面容易被正確使用,不易被誤用(Make interfaces easy to use correctly and hard to use incorrectly)限制類型和值規定能做和不能做的事提供行為一致的介面條款19:設計class猶如設計type(Treat class de ...
  • title: 從零開始:Django項目的創建與配置指南 date: 2024/5/2 18:29:33 updated: 2024/5/2 18:29:33 categories: 後端開發 tags: Django WebDev Python ORM Security Deployment Op ...
  • 1、BOM對象 BOM:Broswer object model,即瀏覽器提供我們開發者在javascript用於操作瀏覽器的對象。 1.1、window對象 視窗方法 // BOM Browser object model 瀏覽器對象模型 // js中最大的一個對象.整個瀏覽器視窗出現的所有東西都 ...