2011-11-02 82 views
1

AFAK,Hadoop Streaming只支持文本输入,这意味着数据按行组织。但是如果我们想要向后兼容,映射器代码将变得混乱,在C++中编写的同一个映射器程序中支持不同版本的日志行。Hadoop Streaming的向后兼容性

我曾经考虑avro或protobuf,但它似乎不支持流模式,是这样吗?

是否还有其他解决方案?

回答

2

其他输入/输出格式也可以是used以及Hadoop Streaming。

Avro support已添加用于Hadoop Streaming。见AVRO-808 & AVRO-830。此Thread也许有用。

我找不到ProtoBuf的InputFormat和OutputFormat类。所以,他们需要定制created

2

仅供参考,hadoop streaming支持二进制输入/输出。

查找-io rawbytes选项。

我创建了一个能够使用SequenceFile的原型(我认为 - 很久以前)。

我放弃了这个想法,因为我不得不从流中反序列化Java Hadoop * Writable。而C#BinaryReader 使用little-endian编码,而Java使用big-endian。所以mapper变得更加复杂了。

无论如何,这是可能的。