我目前正在使用hadoopmapreduce作业处理可写的sequencefiles。在系统的非hadoop相关部分中,同样的可写类型也用于序列化。这种方法很难维护,主要是因为缺乏模式和需要手动处理版本更改。apacheavro似乎处理了这些问题。问题是,在迁移期间,我将拥有两种格式的数据。有没有一种简单的方法来处理迁移?
dauxcl2d1#
我自己也没试过,但也许用过 AvroSequenceFile 格式会有帮助。只是一个 Package SequenceFile 所以从理论上讲,你应该能够在你的旧 SequenceFile 格式以及您的新 Avro 使迁移更容易的格式。下面是有关此格式的详细信息。
AvroSequenceFile
SequenceFile
Avro
bweufnob2#
一般来说,没有什么可以阻止您互换使用avro数据和sequencefile。对于您需要的数据类型,使用任何必要的inputformat,对于输出,在实际情况下使用avro格式当然是有意义的。如果您的输入有不同的格式,请查看多个输入。本质上,您仍然需要实现单独的Map器,但考虑到Map输入键/值不同,这一点需要进一步考虑。搬到阿夫罗是明智之举。如果您在时间和硬件上有足够的能力,甚至可以立即将数据从sequencefile显式转换为avro。您可以使用avro支持的任何语言,而avro恰好也支持sequencefiles。java当然可以(很明显),但pig也非常方便。用户贡献的piggybank项目具有读取sequencefile的功能,然后只需使用来自同一piggybank项目的avrostorage和适当的avro方案来获取avro文件。如果只有pig支持从文件加载avro模式!如果您使用pig,很不幸您将不得不形成显式包含avro模式的脚本,这可能有点烦人。
2条答案
按热度按时间dauxcl2d1#
我自己也没试过,但也许用过
AvroSequenceFile
格式会有帮助。只是一个 PackageSequenceFile
所以从理论上讲,你应该能够在你的旧SequenceFile
格式以及您的新Avro
使迁移更容易的格式。下面是有关此格式的详细信息。
bweufnob2#
一般来说,没有什么可以阻止您互换使用avro数据和sequencefile。对于您需要的数据类型,使用任何必要的inputformat,对于输出,在实际情况下使用avro格式当然是有意义的。如果您的输入有不同的格式,请查看多个输入。本质上,您仍然需要实现单独的Map器,但考虑到Map输入键/值不同,这一点需要进一步考虑。
搬到阿夫罗是明智之举。如果您在时间和硬件上有足够的能力,甚至可以立即将数据从sequencefile显式转换为avro。您可以使用avro支持的任何语言,而avro恰好也支持sequencefiles。java当然可以(很明显),但pig也非常方便。
用户贡献的piggybank项目具有读取sequencefile的功能,然后只需使用来自同一piggybank项目的avrostorage和适当的avro方案来获取avro文件。
如果只有pig支持从文件加载avro模式!如果您使用pig,很不幸您将不得不形成显式包含avro模式的脚本,这可能有点烦人。