当前位置: 首页 > 知识库问答 >
问题:

Kafka-从JSON记录到S3中的拼花文件

闾丘京
2023-03-14

如果我错了,请纠正我。。拼花文件是自描述的,这意味着它包含正确的模式。

我想使用S3接收器融合连接器(特别是因为它正确处理了S3的精确一次语义)从我们的Kafka中读取JSON记录,然后在s3中创建拼花文件(按事件时间分区)。我们的JSON记录没有嵌入模式。

我知道它还不被支持,但我对拼花地板和AVRO也有一些问题。

由于我们的JSON记录中没有嵌入模式,这意味着连接器任务必须从它自己的JSON字段推断数据?(这是可行的解决方案吗?)

在Kafka中,除了拼花,没有模式注册表这样的东西。。,是这样吗?

AVRO似乎很好地集成到Kafka,这意味着使用模式注册表读取模式...这是否意味着融合的S3接收器将足够聪明,可以在s3中创建包含模式作为标题的文件,然后在s3文件中创建一堆记录?

我知道那个家伙正在为这个s3水槽连接器开发拼花地板:

https://github.com/confluentinc/kafka-connect-storage-cloud/pull/172

但我不明白,它似乎在代码中使用了AVRO模式,这是否意味着在Kafka中有AVRO记录才能使用这个拼花实现?

我开始认为在S3上定位AVRO文件会更容易(我可以通过失去一些OLAP功能来负担),但想在使用AVRO之前确定。

祝好

扬尼克

共有1个答案

井逸明
2023-03-14

如果我错了,请纠正我。。拼花文件是自描述的,这意味着它包含正确的模式

正确。如果您有一个拼花文件,您可以从中获取模式。

如何从拼花文件中获取架构/列名?

在s3中创建包含模式作为标头的文件,然后在s3文件中创建一堆记录?

是的,这正是S3连接器为Avro文件工作的方式。

代码中似乎使用了AVRO模式,这是否意味着在Kafka中有AVRO记录才能使用这个拼花实现?

我没有过多地研究PR,但我认为拼花存储格式只需要连接模式,而不需要Avro数据,因为使用AvroData类,可以在连接模式和Avro模式之间来回转换,如AvroData。来自连接模式(schema)。这解析了连接模式结构并形成了一个新的Avro模式,不适用于注册表或要求输入数据为Avro。

也就是说,如果您的JSON对象确实有一个模式,那么可以使用其他JSONFormat选项来编写它们,因为格式是。类设置在转换器后应用。有趣的是,我知道我能够用AvroConverter JSONFormat将Avro输入记录写成JSON文件,但我还没有尝试将JSONConverter模式的JSON与AvroFormat一起使用,所以

我开始认为在S3上定位AVRO文件会更容易

可能...请注意,您可以改用Secor,它具有Hive表集成和对JSON的Parket支持

 类似资料:
  • Kafka是否将S3支持从JSON连接到Parquet?感谢使用Kafka Connect S3提供的可用和替代建议

  • 我看到Kafka Connect可以以Avro或JSON格式写入S3。但是没有Parket支持。添加这个有多难?

  • 我正在尝试使用Kafka-connect来消耗Kafka的消息并将它们写入s3拼花文件。所以我写了一个简单的生产者,它用byte[]生成消息 我的Kafka连接配置是: 这是我得到的错误: 原因:java。lang.IllegalArgumentException:Avro架构必须是记录。在org。阿帕奇。拼花地板阿夫罗。AvroSchemaConverter。转换(AvroSchemaConve

  • 我有一个用例,我需要将拼花文件从Lambda保存到S3。我需要以追加模式存储Lambda函数中触发的事件。 我尝试使用Avro,但它不允许将数据以追加模式存储在同一个拼花文件中。 到目前为止,我发现只要spark允许在附加模式下将数据存储在拼花文件中…然后,我可以使用Lambda提交一个存储数据的spark作业。你认为这个可能的解决方案如何? 然而,真的不存在不使用spark的解决方案吗?预先感谢

  • 我有一个拼花格式的大数据集(大小约1TB),分为2个层次:

  • 我有以Avro格式存储的Kafka主题。我想使用整个主题(在收到时不会更改任何消息)并将其转换为Parket,直接保存在S3上。 我目前正在这样做,但它要求我每次消费一条来自Kafka的消息,并在本地机器上处理,将其转换为拼花文件,一旦整个主题被消费,拼花文件完全写入,关闭写入过程,然后启动S3多部分文件上传。或《Kafka》中的阿夫罗- 我想做的是《Kafka》中的阿夫罗- 注意事项之一是Kaf