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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...