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/
数据类型映射
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 | 字符串 | 否 | – | 运用此 database 和 table-name 主动生成 SQL,并接收上游输入数据写入数据库。此选项与 query 互斥,并具有更高的优先级。 |
table | 字符串 | 否 | – | 运用数据库和此表名主动生成 SQL,接收上游输入数据写入数据库。此选项与 query 互斥,并具有更高的优先级。 |
primary_keys | 数组 | 否 | – | 此选项用于支撑主动生成 SQL 时的 insert 、delete 和 update 操作。 |
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"
}
}