繁体   English   中英

Kafka Connect:读取 JSON 序列化的 Kafka 消息,转换为 Parquet 格式并持久化到 S3

[英]Kafka Connect: Read JSON serialized Kafka message, convert to Parquet format and persist in S3

我需要读取来自 Kafka 主题的 JSON 序列化消息,将它们转换为 Parquet 并保留在 S3 中。

背景

官方S3-Sink-Connector支持 Parquet output 格式,但是:

对于此连接器,您必须将 AvroConverter、ProtobufConverter 或 JsonSchemaConverter 与 ParquetFormat 一起使用。 尝试使用 JsonConverter(带或不带模式)会导致 NullPointerException 和 StackOverflowException。

如果消息不是使用 JSON Schema serialization 写入的,JsonSchemaConverter 会抛出错误

问题陈述

因此,我正在寻找一种方法来从最初以 JSON 格式编写的 Kafka 主题读取消息,以某种方式将它们转换为 JSON 模式格式,然后将它们插入将以 Parquet 格式写入 S3 的 S3 连接器。

或者,考虑到主要要求(获取 Kafka 消息,将其作为 Parquet 文件放入 S3),我也愿意接受替代解决方案(不涉及编写 JAVA 代码)。 谢谢!

PS:不幸的是,改变这些 Kafka 消息最初的写入方式(例如使用JSON Schema 序列化Schema Discovery )目前不是我的选择。

一般来说,您的数据需要有一个模式,因为 Parquet 需要它(S3 parquet 编写器转换为 Avro 作为中间步骤)

您可以考虑使用接受模式的连接转换,并尝试应用 JSON 模式- 请参阅测试 由于这会返回一个Struct object,因此您可以尝试使用JsonSchemaConverter作为接收器的一部分。

但是,如果您只是将随机 JSON 数据扔到没有任何一致字段或值的单个主题中,那么您将很难应用任何模式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM