hadoop—有没有一种简单的方法可以将sequencefiles迁移到avro?

hmmo2u0o  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(350)

我目前正在使用hadoopmapreduce作业处理可写的sequencefiles。在系统的非hadoop相关部分中,同样的可写类型也用于序列化。
这种方法很难维护,主要是因为缺乏模式和需要手动处理版本更改。
apacheavro似乎处理了这些问题。
问题是,在迁移期间,我将拥有两种格式的数据。有没有一种简单的方法来处理迁移?

dauxcl2d

dauxcl2d1#

我自己也没试过,但也许用过 AvroSequenceFile 格式会有帮助。只是一个 Package SequenceFile 所以从理论上讲,你应该能够在你的旧 SequenceFile 格式以及您的新 Avro 使迁移更容易的格式。
下面是有关此格式的详细信息。

bweufnob

bweufnob2#

一般来说,没有什么可以阻止您互换使用avro数据和sequencefile。对于您需要的数据类型,使用任何必要的inputformat,对于输出,在实际情况下使用avro格式当然是有意义的。如果您的输入有不同的格式,请查看多个输入。本质上,您仍然需要实现单独的Map器,但考虑到Map输入键/值不同,这一点需要进一步考虑。
搬到阿夫罗是明智之举。如果您在时间和硬件上有足够的能力,甚至可以立即将数据从sequencefile显式转换为avro。您可以使用avro支持的任何语言,而avro恰好也支持sequencefiles。java当然可以(很明显),但pig也非常方便。
用户贡献的piggybank项目具有读取sequencefile的功能,然后只需使用来自同一piggybank项目的avrostorage和适当的avro方案来获取avro文件。
如果只有pig支持从文件加载avro模式!如果您使用pig,很不幸您将不得不形成显式包含avro模式的脚本,这可能有点烦人。

相关问题