基于Tablestore Sink Connector,您可以将Apache Kafka中的数据批量导入到表格存储(Tablestore)的数据表中。

背景信息

Kafka是一个分布式消息队列系统,不同的数据系统可以通过Kafka Connect工具将数据流输入Kafka和从Kafka获取数据流。

表格存储团队基于Kafka Connect开发了Tablestore Sink Connector。Tablestore Sink Connector会根据订阅的主题(Topic)轮询地从Kafka中拉取消息记录(Record),并对消息记录进行解析,然后将数据批量导入到Tablestore的数据表。该Connector优化了数据导入过程,并且支持个性化配置。

功能特性

Tablestore Sink Connector的主要功能特性如下:

  • 至少交付一次

    保证Kafka消息记录从Kafka主题向Tablestore至少交付一次。

  • 数据映射

    Kafka主题中的数据先通过Converter进行反序列化,您需要在Kafka Connect的worker配置或者connetor配置中修改key.converter和value.converter属性,以确保配置合适的反序列化转换器。您可以选择Kafka Connect带有的JsonConverter,也可以选择由第三方提供的其它Converter或者自定义Converter。

    反序列化后的数据通过EventParser解析为表格存储中数据表的主键列和属性列。Tablestore Sink Connector默认的DefaultEventParser支持Kafka Connect的Struct或Map类型。如果Kafka消息记录为不兼容的数据格式,您还可以选择自定义解析器,并且在event.parse.class中配置自定义解析器。

  • 数据操作模式
    • 主键模式

      支持从Kafka消息记录的不同部分提取数据表主键,包括消息记录的Coordinates(Topic,Partition,Offset),Key和Value。

    • 属性列白名单

      支持过滤Kafka消息记录的字段得到所需的属性列。

    • 写入模式

      支持put模式(覆盖写)和update模式(更新写)两种写入模式,默认为put模式。

      您还可以选择写入操作是否需要保序,默认写入顺序与读取顺序保持一致,如果您对写入效率有要求,请在保序与写入效率之间做权衡,关闭保序有助于提升写入效率。

    • 删除模式

      默认禁止删除操作。当Kafka消息记录出现空值时,您可以选择是否进行删除行或删除属性列的操作。

  • 自动创建目标表

    当目标表缺失时,支持根据配置的主键列和属性列白名单(如果有)自动创建目标表。

  • 错误处理策略

    由于导入数据时为批量操作,其中部分消息记录可能发生解析错误或者写入错误。此时,您可以选择立即终止任务或者忽略这些错误,您还可以选择将产生错误的消息记录和错误信息记录在Kafka消息系统中或者表格存储中。

工作模式

Tablestore Sink Connector具有standalone(独立)模式和distributed(分布式)模式两种工作模式,请根据实际需要选择。
  • 在standalone模式下,所有任务都将在单个进程中执行,此模式更易于配置和使用。您可以使用standalone模式了解Tablestore Sink Connector的各种功能。
  • 在distributed模式下,所有任务通过多个进程并行执行,此模式支持根据进程变化自动均衡任务以及在执行任务过程中提供容错能力,稳定性更好。建议您使用distributed模式。