kafka 连接 hdfs 展平数组记录

kafka connect hdfs flatten array records

我们正在试验 Kafka Connect HDFS,源数据包含一组推送到主题的 avro 记录(以下称为容器记录)。

计划是使用 kafka-connect hdfs 将容器记录中的数组展平为单独的记录并作为 avro 写入 hdfs,然后提交实际的容器记录。

然而,kafka-connect-hdfs 似乎不支持开箱即用。 在尝试浏览源代码时,我们发现主题名称和偏移量管理之间存在紧密映射,并且尝试将 1 个 sinkRecod 转换为多个 sinkRecords 偏离了预期的行为。

所以想验证 1 到 n 转换是否可行?如果是这样怎么办?

Kafka Connect 支持单消息转换 (SMT),这是 Kafka Connect 中的功能领域(如果有的话),可以满足您的需求。然而 IIRC SMT 仅用于 1:1 input/output 记录处理,而不是 1:n - 也就是说,我不 认为 (但我愿意更正)您可以从单个输入记录生成其他输出记录。

您可能想看看 Kafka Streams,它将为您提供执行此操作的全部功能。您将编写一个流应用程序来订阅源主题,进行必要的数组处理,然后将其写回新的 Kafka 主题。新的 Kafka 主题将成为您的 Kafka Connect HDFS 接收器的源主题。