本文已参与「新人创作礼」活动,一起开启掘金创作之路。
2.8.4 Mode
mode
每次轮询表时更新表的方式。选项包括:
- 类型:字符串
- 默认值:“”
- 有效值:[ bulk, timestamp, incrementing, timestamp+incrementing]
- bulk:每次轮询时对整个表执行批量加载
- incrementing:在每个表上使用严格递增的列以仅检测新行。请注意,这不会检测到对现有行的修改或删除。
- timestamp:使用时间戳列(或类似时间戳的列)来检测新行和修改过的行。假设每次写入都会更新该列,并且值是单调递增的,但不一定唯一。
- timestamp + incrementing:使用两列,一个用于检测新行和已修改行的timestamp列,另一个用于更新的全局唯一ID的严格递增列,因此可以为每行分配唯一的流偏移量。
- 重要性:高
- 家属:
incrementing.column.name,timestamp.column.name,validate.non.null
incrementing.column.name
严格递增的列的名称,用于检测新行。任何空值表示应通过查找自动递增的列来自动检测该列。该列可能不能为空。
- 类型:字符串
- 默认值:“”
- 重要性:中等
timestamp.column.name
用一个或多个时间戳列的逗号分隔列表,以使用COALESCE SQL函数检测新行或修改过的行。每次轮询都会发现第一个非空时间戳值大于看到的最大先前时间戳值的行。至少一列不应为空。
- 类型:清单
- 默认值:“”
- 重要性:中等
validate.non.null
默认情况下,JDBC连接器将验证所有增量表和时间戳表是否将NOT NULL设置为用作其ID /时间戳的列。如果没有这些表,则JDBC连接器将无法启动。将此设置为false将禁用这些检查。
- 类型:布尔值
- 默认值:true
- 重要性:低
query
如果指定,则执行查询以选择新的或更新的行。如果要联接表,选择表中列的子集或过滤数据,请使用此设置。如果使用此连接器,则将仅使用此查询复制数据–整个表复制将被禁用。仍然可以使用不同的查询模式进行增量更新,但是为了正确地构造增量查询,必须有可能在此查询后附加WHERE子句(即,不得使用WHERE子句)。如果使用WHERE子句,则它本身必须处理增量查询。
- 类型:字符串
- 默认值:“”
- 重要性:中等
quote.sql.identifiers
何时在SQL语句中引用表名,列名和其他标识符。为了向后兼容,默认值为always。
- 类型:字符串
- 默认值:始终
- 重要性:中等
2.8.5 Connector
table.types
默认情况下,JDBC连接器将仅从源数据库中检测类型为TABLE的表。此配置允许提取命令分隔的表类型列表。
-
类型: list.
-
TABLE
-
VIEW
-
SYSTEM TABLE
-
GLOBAL TEMPORARY
-
LOCAL TEMPORARY
-
ALIAS
-
SYNONYM
在大多数情况下,只有TABLE或VIEW才有意义。
-
-
默认值:TABLE
-
重要性:低
poll.interval.ms
以毫秒为单位的频率,用于轮询每个表中的新数据。
- 类型:int
- 默认值:5000
- 重要性:高
batch.max.rows
轮询新数据时,单个批处理中包含的最大行数。此设置可用于限制连接器内部缓冲的数据量。
- 类型:int
- 默认值:100
- 重要性:低
table.poll.interval.ms
轮询新表或删除表的频率(以毫秒为单位),这可能导致更新的任务配置开始对添加表中的数据进行轮询或停止对删除表中的数据进行轮询。
- 类型:长
- 默认值:60000
- 重要性:低
topic.prefix
在表名之前添加前缀,以生成要向其发布数据的ApacheKafka®主题的名称,或者在自定义查询的情况下,生成要发布到的主题的全名。
- 类型:字符串
- 重要性:高
timestamp.delay.interval.ms
在将其包含在结果中之前,出现具有特定时间戳记的行之后需要等待多长时间。您可以选择添加一些延迟,以允许时间戳较早的事务完成。第一次执行将获取所有可用记录(即从时间戳0开始),直到当前时间减去延迟为止。接下来的每一次执行都会从上一次获取数据到当前时间减去延迟。
- 类型:长
- 默认值:0
- 重要性:高
db.timezone
使用基于时间的条件进行查询时,连接器中使用的JDBC时区的名称。默认为UTC。
- 类型:字符串
- 默认值:“ UTC”
- 有效值:任何有效的JDK时区
- 重要性:中等
2.9 示例
- 请求示例
-----------------------------示例JDBC Source---------------------------------------
curl -i -k -H "Content-type: application/json" -X POST -d '{
"name": "jdbc-source",
"config": {
"connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
"tasks.max": "1",
"connection.url":"jdbc:mysql://mysql:3306/test",
"mode": "incrementing",
"connection.user":"root",
"connection.password":"root",
"dialect.name":"MySqlDatabaseDialect",
"table.whitelist":"test",
"schema.pattern":"",
"numeric.mapping":"best_fit",
"incrementing.column.name": "id",
"topic.prefix": "jdbc-source",
"key.converter":"org.apache.kafka.connect.storage.StringConverter",
"value.converter":"io.confluent.connect.avro.AvroConverter",
"value.converter.schema.registry.url":"http://master:8081"
}
}' http://localhost:8083/connectors
- 读取数据