SeaTunnel JDBC DB2 Sink Connector支撑的作业原理,快来学习吧!
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/

数据类型映射

SeaTunnel JDBC DB2 Sink Connector支撑的作业原理,快来学习吧!

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

}

本文由 白鲸开源科技 供给发布支撑!