繁体   English   中英

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

[英]Kafka - From JSON records to Parquet files in S3

如果我错了,请纠正我。.实木复合地板文件是自我描述的,表示它包含正确的架构。

我想使用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记录可以使用此Parquet实现?

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

问候,

雅尼克

如果我错了,请纠正我。.实木复合地板文件是自我描述的,表示它包含正确的架构

正确。 如果有实木复合地板文件,则可以从中获取架构。

如何从实木复合地板文件中获取架构/列名称?

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

是的,这正是S3 Connector处理Avro文件的方式。

似乎在代码中使用了AVRO模式,这是否意味着在Kafka中就有AVRO记录可以使用此Parquet实现?

我没有对PR进行过多的研究,但是我认为Parquet存储格式仅需要一个Connect Schema,而不需要Avro数据,因为使用AvroData类,可以在Connect Schema和Avro Schema之间进行来回转换,例如avroData.fromConnectSchema(schema) 这将解析“连接架构”结构并形成一个新的Avro架构,不适用于注册表或要求输入数据为Avro。

话虽如此,如果您的JSON对象确实具有模式,则可能可以使用其他JSONFormat选项来编写它们,因为format.class设置在Converter之后应用。 有趣的是,我知道我可以使用AvroConverter + JSONFormat将Avro输入记录写为JSON文件,但是我没有尝试将JSONConverter +模式的JSON与AvroFormat一起使用,因此YMMV

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

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

暂无
暂无

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

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