2

我正在使用 Hadoop 将 JSON 转换为 CSV 文件,以便使用 Hive 访问它们。

目前,映射器正在填充自己的数据结构,用 JSON-Smart 解析 JSON。然后,reducer 读取该对象并将其写入文件,以逗号分隔。为了使这更快,我已经在数据结构中实现了可写接口......

现在我想将 Avro 用于数据结构对象以具有更大的灵活性和性能。如何更改我的类以使它们交换 Avro 对象而不是可写对象?

4

1 回答 1

5

Hadoop 通过SerializationFactory.

默认情况下,Hadoop 使用WritableSerialization该类来处理实现Writable接口的类的反序列化,但您可以Serialization通过设置 Hadoop 配置属性io.serializations(实现序列化接口的类的 CSV 列表)注册实现接口的自定义序列化程序。

AvroSerialization在类中实现了接口AvroSerialization- 所以这将是您在io.serializations属性中配置的类。

Avro 实际上有一大堆帮助类,可以帮助您编写 Map / Reduce 作业以使用 Avro 作为输入/输出 -源代码中有一些示例(Git 副本)

目前我似乎找不到任何关于 Avro 和 Map Reduce 的好的文档,但我确信还有其他一些好的例子。

于 2013-02-12T01:25:53.697 回答