AFAK,Hadoop Streaming仅支持文本输入,这意味着数据按行组织。但是如果我们想要向后兼容性,在c ++中用同一个mapper程序支持不同版本的日志行,映射器代码就会变得混乱。
我曾经考虑使用avro或protobuf,但似乎它们在流媒体模式下不受支持,这是真的吗?
还有其他解决方案吗?
答案 0 :(得分:2)
其他输入/输出格式也可以是used以及Hadoop Streaming。
已为Hadoop Streaming添加了Avro support。见AVRO-808& AVRO-830。此Thread也许有用。
我找不到ProtoBuf的InputFormat和OutputFormat类。因此,他们需要自定义created。
答案 1 :(得分:2)
仅供参考,hadoop流支持二进制输入/输出。
查找-io rawbytes选项。
我创建了一个能够使用SequenceFile的原型(我想 - 很久以前)。
我放弃了这个想法,因为我必须从流中反序列化Java Hadoop * Writable。和C#BinaryReader 使用little-endian编码,而Java使用big-endian。因此映射器应该变得更加复杂。
无论如何,这是可能的。