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
}
}