我有一个包含多个部分的文本文档,每个部分都有标题和正文。这需要通过某些条件进行过滤,并删除其中的所有垃圾字符。
由于在mapper输出中行的顺序变得混乱,因此在map中处理此文档时会遇到问题。
因此,我引入了一个自定义数据类型linenumValuetuple,并为每行分配了一个行号,以便在读取时使用值中的文本,以便按reducer中的行号和作为标题ID的键对其进行排序。
但是问题在于,每个部分都划分为不同的映射器,而单个部分则具有不同的标题ID。如何将一个部分分割为一个部分,以便我可以为所有行获得相同的标题ID,并按与输入相同的顺序在输出中对其进行排序?

最佳答案

您将必须创建自己的InputFormat和RecordReader。可以找到更多信息hereyahoo tutorial
问题在于,跨越多个块大小的文档会被拆分,并且每次拆分都会转到不同的映射器。有某些可用的输入格式,例如XMLInputFormat。如果您可以将输入视为键值格式,也可以将其预处理为SequenceFileFormat,我认为这是理想的选择。

关于hadoop - hadoop的行顺序在输出中不相同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19509317/

10-11 10:19