SeaTunnel DB2 Source Connector 使用文件(含詳細操作步驟)

ApacheSeaTunnel發表於2024-04-02

DB2是IBM的一款關係型資料庫管理系統,JDBC DB2 Source Connector是一個用於透過JDBC讀取外部資料來源資料的聯結器。Apache SeaTunnel如何支援JDBC DB2 Source Connector?請參考本文件。

支援引擎

Spark
Flink
SeaTunnel Zeta引擎

主要特性

  • 批處理(batch)
  • 精確一次(exactly-once)
  • 列投影(column projection)
  • 並行處理(parallelism)
  • 支援使用者自定義分割(support user-defined split)

它支援查詢SQL並可以實現投影效果。

描述

透過 JDBC 讀取外部資料來源資料。

支援資料來源

資料來源 支援版本 驅動程式 URL Maven
DB2 不同的依賴版本有不同的驅動程式類。 com.ibm.db2.jdbc.app.DB2Driver jdbc:db2://127.0.0.1:50000/dbname Download

資料庫依賴

資料庫依賴需要下載對應'Maven'的支援列表並複製到'$SEATNUNNEL_HOME/plugins/jdbc/lib/'工作目錄。
例如,DB2資料來源:cp db2-connector-java-xxx.jar $SEATNUNNEL_HOME/plugins/jdbc/lib/

資料型別對映

DB2資料型別 SeaTunnel資料型別
BOOLEAN BOOLEAN
SMALLINT SHORT
INT
INTEGER
INTEGER
BIGINT LONG
DECIMAL
DEC
NUMERIC
NUM
DECIMAL(38,18)
REAL FLOAT
FLOAT
DOUBLE
DOUBLE PRECISION
DECFLOAT
DOUBLE
CHAR
VARCHAR
LONG VARCHAR
CLOB
GRAPHIC
VARGRAPHIC
LONG VARGRAPHIC
DBCLOB
STRING
BLOB BYTES
DATE DATE
TIME TIME
TIMESTAMP TIMESTAMP
ROWID
XML
Not supported yet

源選項

名稱 型別 必需 預設 描述
url String Yes - JDBC連線的URL。參考案例:jdbc:db2:127.0.0.1:50000/dbname
driver String Yes - 用於連線到遠端資料來源的jdbc類名。如果你使用db2,值是com.ibm.db2.jdbc.app.DB2Driver
user String No - 連線例項使用者名稱
password String No - 連線例項密碼
query String Yes - 查詢語句
connection_check_timeout_sec Int No 30 用於驗證連線到完成以等待資料庫操作的時間(以秒為單位)
partition_column String No - 用於並行處理的分割槽列名,僅支援數值型別,僅支援數值型別主鍵,並且只能配置一個列。
partition_lower_bound Long No - partition_column的掃描最小值,如果未設定,SeaTunnel將查詢資料庫獲取最小值。
partition_upper_bound Long No - partition_column的掃描最大值,如果未設定,SeaTunnel將查詢資料庫獲取最大值。
partition_num Int 可選 作業並行度 分割槽計數的數量,僅支援正整數。預設值為作業的並行度。
fetch_size Int 可選 0 對於返回大量物件的查詢,您可以配置在查詢中使用的行抓取大小,以提高效能,減少滿足選擇條件所需的資料庫訪問次數。零表示使用 JDBC 的預設值。
common-options 可選 - 源外掛的通用引數,請參考 Source Common Options 獲取詳細資訊。

提示

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

任務示例

簡單示例:

此示例在單一併發模式下查詢您的測試資料庫中型別為 'table' 的 16 條資料,並查詢其所有欄位。您還可以指定要查詢的最終輸出到控制檯的欄位。

# Defining the runtime environment
env {
  # You can set flink configuration here
  execution.parallelism = 2
  job.mode = "BATCH"
}
source{
    Jdbc {
        url = "jdbc:db2://127.0.0.1:50000/dbname"
        driver = "com.ibm.db2.jdbc.app.DB2Driver"
        connection_check_timeout_sec = 100
        user = "root"
        password = "123456"
        query = "select * from table_xxx"
    }
}

transform {
    # If you would like to get more information about how to configure seatunnel and see full list of transform plugins,
    # please go to https://seatunnel.apache.org/docs/transform-v2/sql
}

sink {
    Console {}
}

並行示例:

如果想要讀取整個表,可以根據您配置的分片欄位和分片資料,在並行方式下讀取查詢表。

source {
    Jdbc {
        url = "jdbc:db2://127.0.0.1:50000/dbname"
        driver = "com.ibm.db2.jdbc.app.DB2Driver"
        connection_check_timeout_sec = 100
        user = "root"
        password = "123456"
        # Define query logic as required
        query = "select * from type_bin"
        # Parallel sharding reads fields
        partition_column = "id"
        # Number of fragments
        partition_num = 10
    }
}

並行邊界:

在查詢中指定資料的上限和下限邊界更加高效。根據您配置的上限和下限邊界來讀取您的資料來源,效率更高。

source {
    Jdbc {
        url = "jdbc:db2://127.0.0.1:50000/dbname"
        driver = "com.ibm.db2.jdbc.app.DB2Driver"
        connection_check_timeout_sec = 100
        user = "root"
        password = "123456"
        # Define query logic as required
        query = "select * from type_bin"
        partition_column = "id"
        # Read start boundary
        partition_lower_bound = 1
        # Read end boundary
        partition_upper_bound = 500
        partition_num = 10
    }
}

相關文章