我能够将CSV数据转换为ORC格式。但是为了满足新的需求,我的应用程序需要序列化输入数据,这些数据可以是任何格式,如CSV、Avro等。转换成ORC writer可理解的格式,并将其写入kafka主题。稍后,我的应用程序或其他应用程序需要从kafka主题中读取这些数据,并将其写入ORC文件。输入数据被封装在一个对象中作为属性,同一对象具有定义为另一个属性的ORC模式。
发布于 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等等。只要您在目标存储中正确地命名它们,它们就应该可以工作。
以下是一些注意事项:
https://stackoverflow.com/questions/51615108
复制相似问题