首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将不同类型的数据序列化为java中的ORC格式。

将不同类型的数据序列化为java中的ORC格式。
EN

Stack Overflow用户
提问于 2018-07-31 21:56:55
回答 1查看 733关注 0票数 0

我能够将CSV数据转换为ORC格式。但是为了满足新的需求,我的应用程序需要序列化输入数据,这些数据可以是任何格式,如CSV、Avro等。转换成ORC writer可理解的格式,并将其写入kafka主题。稍后,我的应用程序或其他应用程序需要从kafka主题中读取这些数据,并将其写入ORC文件。输入数据被封装在一个对象中作为属性,同一对象具有定义为另一个属性的ORC模式。

EN

回答 1

Stack Overflow用户

发布于 2018-08-13 06:24:56

如果你已经可以从CSV/Avro/etc源创建ORC格式,你可以创建小的ORC文件,每个大约10MB,然后你可以使用你自己的序列化方法将它们填充到Kafka中,比如谷歌协议缓冲区:https://developers.google.com/protocol-buffers/docs/overview

您可以在自己的字段(文件名、路径/目录等)中定义元数据,并将实际的二进制ORC文件作为简单的字节数组发送。

在Kafka消费者端,任何使用消息的人只需要使用protobuf模式反序列化它们,并将接收到的字节数组存储为具有正确文件名、路径等的HDFS/S3/etc文件。这里的一个最大优势是Protobuf和Kafka不关心您在字节数组字段中发送的内容。它可以是纯文本,也可以是ORC、二进制AVRO等等。只要您在目标存储中正确地命名它们,它们就应该可以工作。

以下是一些注意事项:

  • 您需要调整kafka安装中的默认值,以允许大于1MB的消息,这是最大大小的默认值。请务必查看此答案来更改所有必需的配置值:How can I send large messages with Kafka (over 15MB)?
  • If下游有配置单元,请确保正确定义您的配置单元表(具有ORC格式,Avro,拼接,文本等),以便它们是readable.
  • Smallish文件(每个小于100MB ),如果您试图使用这些文件与像HDFS或EMR/S3存储,特别是如果你有大量的数据,不会很好地工作。因此,作为最后一步,您可能希望在传输过程完成后合并文件。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51615108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档