hadoop-如何从实现可写接口切换到使用avro对象?

wydwbb8l  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(324)

我正在使用hadoop将json转换为csv文件,以便通过hive访问它们。
目前,Map程序正在填充自己的数据结构,用json smart解析json。然后,reducer读取该对象并将其写入一个文件,用逗号分隔。为了加快速度,我已经在数据结构中实现了可写接口。。。
现在我想使用avro作为数据结构对象,以获得更大的灵活性和性能。如何更改类以使它们交换avro对象而不是可写对象?

klr1opcd

klr1opcd1#

hadoop通过 SerializationFactory .
默认情况下,hadoop使用 WritableSerialization 类来处理实现 Writable 接口,但您可以注册实现 Serialization 通过设置hadoop配置属性 io.serializations (实现序列化接口的类的csv列表)。
avro实现了 Serialization 中的接口 AvroSerialization 类-这就是您在 io.serializations 财产。
avro实际上有一大堆帮助类,可以帮助您编写map/reduce作业,将avro用作输入/输出—源代码中有一些示例(git copy)
目前我似乎找不到任何关于avro&map-reduce的好文档,但我肯定还有其他一些好的例子。

相关问题