AFAK,Hadoop Streaming 只支持文本输入,这意味着数据是按行组织的。但是如果我们想要向后兼容,映射器代码会变得混乱,支持在用 c++ 编写的同一个映射器程序中的不同版本的日志行。
我曾经考虑过avro或protobuf,但似乎在流模式下不支持它们,是真的吗?
还有其他解决方案吗?
仅供参考,hadoop 流支持二进制输入/输出。
寻找-io rawbytes选项。
我创建了一个能够使用 SequenceFile 的原型(我认为 - 这是很久以前的事了)。
我放弃了这个想法,因为我必须从流中反序列化 Java Hadoop *Writables。C# BinaryReader 使用 little-endian 编码,而 Java 使用 big-endian。所以映射器变得更加复杂,它应该是。
无论如何,这是可能的。