>我有一个包含多个部分的文本文档,每个部分都有标题和正文。这需要按某些条件过滤并删除其中的所有垃圾字符。在mapreduce中处理此文档存在问题,因为映射器输出中的行顺序混乱。因此,我引入了一个自定义数据类型 linenumValuetuple,并在读取值中的文本时为每一行分配一个行号,以便按化简器和键中的行号作为标题 ID 进行排序。但问题是每个部分被拆分到不同的映射器中,并且单个部分获得不同的标题 ID。如何将单个部分拆分为一个拆分,以便我可以为所有行获取相同的标题 ID,并以与输入相同的顺序在输出中对其进行排序???
您必须创建自己的 InputFormat 和 RecordReader。更多信息可以在这里找到,还有一个雅虎教程。问题是跨越多个块大小的文档被拆分,并且每个拆分都会转到不同的映射器。有某些可用的输入格式,例如 XMLInputFormat。如果你可以将你的输入视为一种键值格式,你也可以把它预处理为SequenceFileFormat,我认为这是理想的。