有没有一种从SequenceFiles迁移到Avro的简单方法?

时间:2013-11-17 13:35:43

标签: hadoop avro writable sequencefile

我目前正在使用带有可写的SequenceFiles的hadoop mapreduce作业。 同样的Writable类型也用于系统的非hadoop相关部分的序列化。

这种方法难以维护 - 主要是因为缺乏架构以及需要手动处理版本更改。

似乎apache avro处理这些问题。

问题是,在迁移过程中,我将获得两种格式的数据。 有一种简单的方法来处理迁移吗?

2 个答案:

答案 0 :(得分:2)

我自己没有尝试过,但也许使用AvroSequenceFile格式会有所帮助。它只是SequenceFile的包装器,因此从理论上讲,您应该能够以旧的SequenceFile格式以及新的Avro格式编写数据,这样可以简化迁移。

此格式为more information

答案 1 :(得分:1)

通常,没有什么可以阻止您互相使用Avro数据和SequenceFiles。使用您需要的数据类型所需的任何InputFormat,对于输出,当然有意义的是在实际使用时使用Avro格式。如果您的输入有不同的格式,请查看MultipleInputs。从本质上讲,你仍然需要实现单独的Mappers,但考虑到Map输入键/值是不同的,这是不同的。

搬到Avro是明智之举。如果你有时间和硬件的能力,甚至可能值得将你的数据从SequenceFile显式转换为Avro。您可以使用Avro支持的任何语言,它也恰好支持SequenceFiles来执行此操作。 Java肯定会(显然),但Pig也非常方便。

用户贡献PiggyBank项目具有读取SequenceFile的功能,然后只需使用相同的PiggyBank项目中的AvroStorage和适当的Avro方案来获取Avro文件。

如果只有Pig支持从文件加载Avro架构..!如果您使用Pig,您将不幸地必须形成明确包含Avro架构的脚本,这可能有点烦人。