gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:40:22 27 4
gpt4 key购买 nike

如果我错了纠正我..
Parquet 文件是自我描述的,这意味着它包含其正确的架构。

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

我知道它还不受支持,但我也有一些关于 Parquet 和 AVRO 的问题。

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

没有像模式注册表这样的东西,但是对于 Parquet ,在 Kafka 中 ..,是吗?

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

我知道那个人正在为这个 s3 接收器连接器实现 Parquet :

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

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

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

问候,

雅尼克

最佳答案

Correct me if I'm wrong.. A parquet file is self describing, means it contains its proper schema



正确的。如果您有 Parquet 文件,则可以从中获取架构。

How do I get schema / column names from parquet file?

create files in s3 containing the schema as header and then bunch of records in s3 files ?



是的,这正是 S3 连接器处理 Avro 文件的方式。

it seems it's using AVRO schema in the code, does this imply having AVRO records in Kafka to use this Parquet implementation ?



我没有过多地研究 PR,但我认为 Parquet 存储格式只需要 Connect Schema,而不需要 Avro 数据,因为使用 AvroData 类,可以在 Connect Schema 和 Avro 模式之间来回转换,如 avroData.fromConnectSchema(schema) .这会解析 Connect Schema 结构并形成一个新的 Avro 模式,并且不会对 Registry 起作用或要求输入数据为 Avro。

话虽如此,如果您的 JSON 对象确实有一个架构,那么可能可以使用其他 JSONFormat 的选项来编写它们,因为 format.class设置在转换器之后应用。有趣的是,我知道我能够使用 AvroConverter + JSONFormat 将 Avro 输入记录写为 JSON 文件,但我还没有尝试使用 JSONConverter + 架构的 JSON 和 AvroFormat,所以 YMMV

I'm starting to think that it would be easier to target AVRO files on S3



可能... 注意,您可以改用 Secor,它具有 Hive 表集成和 Parquet support for JSON

关于json - Kafka - 从 JSON 记录到 S3 中的 Parquet 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57972692/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com