Kafka Connect相关插件配置文档之七

246 阅读5分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

Kafka Connect相关插件配置文档之一

Kafka Connect相关插件配置文档之二

Kafka Connect相关插件配置文档之三

Kafka Connect相关插件配置文档之四

Kafka Connect相关插件配置文档之五

Kafka Connect相关插件配置文档之六

2.7 Schema Evolution

使用Avro转换器时,JDBC连接器支持架构演变。当数据库表架构发生更改时,JDBC连接器可以检测到更改,创建新的Connect架构,并尝试在Schema Registry中注册新的Avro架构。是否可以成功注册架构取决于架构注册表的兼容性级别,默认情况下该兼容性级别是向后的。

例如,如果您从表中删除一列,则更改是向后兼容的,并且相应的Avro架构可以在Schema Registry中成功注册。如果您修改数据库表架构以更改列类型或添加列,则将Avro架构注册到架构注册表时,由于更改不向后兼容,它将被拒绝。

您可以更改架构注册表的兼容性级别,以允许不兼容的架构或其他兼容性级别。有两种方法可以做到这一点:

  • 使用设置连接器使用的主题的兼容级别 。受试者有格式,并 在被确定的配置和表名。PUT /config/(string: subject)``topic-key``topic-value``topic``topic.prefix
  • 通过avro.compatibility.level在架构注册表中进行设置,将架构注册表配置为使用其他架构兼容性级别 。请注意,这是一个全局设置,适用于架构注册表中的所有架构。

但是,由于JDBC API的限制,某些兼容的架构更改可能被视为不兼容的更改。例如,添加具有默认值的列是向后兼容的更改。但是,由于JDBC API的局限性,很难将其映射到Kafka Connect模式中正确类型的默认值,因此当前省略了默认值。其含义是,即使数据库表架构的某些更改是向后兼容的,在Schema Registry中注册的架构也不是向后兼容的,因为它不包含默认值。

如果将JDBC连接器与HDFS连接器一起使用,则对模式兼容性也有一些限制。启用Hive集成后,需要向后,向前和完整的架构兼容性,以确保Hive架构能够查询某个主题下的全部数据。由于某些兼容的架构更改将被视为不兼容的架构更改,因此这些更改将不起作用,因为生成的Hive架构将无法查询整个数据中的某个主题。

2.8 Configuration Properties

2.8.1 配置类

要使用此连接器,请在connector.class配置属性中指定连接器类的名称。

connector.class=io.confluent.connect.jdbc.JdbcSourceConnector

连接器特定的配置属性如下所述。

2.8.2 数据库连接安全

在连接器配置中,您会注意到没有安全参数。这是因为SSL不属于JDBC标准,而是取决于所使用的JDBC驱动程序。通常,您需要通过connection.url参数配置SSL 。例如,对于MySQL,它看起来像:

connection.url="jdbc:mysql://127.0.0.1:3306/sample?verifyServerCertificate=false&useSSL=true&requireSSL=true"

请查阅有关支持和配置的特定JDBC驱动程序文档。

2.8.3 数据库

connection.url

JDBC连接URL。

  • 类型:字符串
  • 重要性:高
  • 家属:table.whitelisttable.blacklist
connection.user

JDBC连接用户。

  • 类型:字符串
  • 默认值:空
  • 重要性:高
connection.password

JDBC连接密码。

  • 类型:密码
  • 默认值:空
  • 重要性:高
connection.attempts

检索有效JDBC连接的最大尝试次数。

  • 类型:int
  • 默认值:3
  • 重要性:低
connection.backoff.ms

两次连接尝试之间的退避时间(以毫秒为单位)。

  • 类型:长
  • 默认值:10000
  • 重要性:低
catalog.pattern

目录模式以从数据库中获取表元数据。

  • 类型:字符串
  • 默认值:空
    • “”检索那些没有目录的人
    • null(默认值)指示不使用架构名称来缩小搜索范围,并且所有表元数据均已获取,无论目录如何。
  • 重要性:中等
table.whitelist

要包括在复制中的表的列表。如果指定,则table.blacklist可能未设置。使用逗号分隔的列表来指定多个表(例如)。table.whitelist: "User, Address, Email"

  • 类型:清单
  • 默认值:“”
  • 重要性:中等
table.blacklist

列表中要排除的表。如果指定,则table.whitelist可能未设置。使用逗号分隔的列表来指定多个表(例如)。table.blacklist: "User, Address, Email"

  • 类型:清单
  • 默认值:“”
  • 重要性:中等
schema.pattern

从数据库中获取表元数据的模式模式。

  • 类型:字符串

  • 默认值:空

    • "" 检索那些没有模式的。
    • null(默认值)指示不使用架构名称来缩小搜索范围,并且所有表元数据均被获取,而与架构无关。
  • 重要性:高

    重要

    如果将其保留为默认的null设置,则连接器可能会超时并失败,原因是接收到大量的表元数据。确保为大型数据库设置此参数。

numeric.precision.mapping

是否尝试通过精度将NUMERIC值映射到整数类型。现在不推荐使用此选项。将来的版本可能会完全删除它。请numeric.mapping改用。

  • 类型:布尔值
  • 默认值:false
  • 重要性:低
numeric.mapping

通过精度映射NUMERIC值,还可以选择缩放为整数或十进制类型。

  • 类型:字符串
  • 默认值:空
  • 有效值:[none,precision_only,best_fit]
    • 使用none如果所有的数字列被连接的DECIMAL逻辑类型来表示。
    • 使用best_fit如果数值列应基于列的精度和规模转换为连接的INT8,INT16,INT32,INT64或FLOAT64。
    • 使用precision_only映射仅基于列的精度假设列的比例为0数字列。
    • none选项是默认选项,但由于Connect的DECIMAL类型映射到其二进制表示形式,因此可能会导致Avro的序列化问题,并且best_fit由于它映射到最合适的原始类型而经常会被首选。
  • 重要性:低
dialect.name

该连接器应使用的数据库方言的名称。默认情况下为空,并且连接器根据JDBC连接URL自动确定方言。如果要覆盖该行为并使用特定的方言,请使用此选项。可以使用JDBC连接器插件中所有正确包装的方言。

  • 类型:字符串
  • 默认值:“”
  • 有效值:[ ], Db2DatabaseDialect, MySqlDatabaseDialect, SybaseDatabaseDialect, GenericDatabaseDialect, OracleDatabaseDialect ,SqlServerDatabaseDialect, PostgreSqlDatabaseDialect, SqliteDatabaseDialect, DerbyDatabaseDialect , SapHanaDatabaseDialect, MockDatabaseDialect, VerticaDatabaseDialect
  • 重要性:低