我有一个包含多个部分的文本文档,每个部分都有标题和正文。这需要按特定条件进行过滤,并删除其中的所有垃圾字符。 在map map中处理此文档时出现问题,因为行的顺序在mapper输出中混乱。 所以我引入了一个自定义数据类型linenumValuetuple并为每行分配一个行号,因为它使用值中的文本读取,以便它按照reducer中的行号和键作为标题ID进行排序。 但问题是每个部分都分成不同的映射器,单个部分获得不同的标题ID。如何将单个部分作为一个分割,以便我可以获得所有行的相同标题ID,并在输出中按照与输入相同的顺序对其进行排序???
答案 0 :(得分:2)
您必须创建自己的InputFormat和RecordReader。可以找到更多信息here和yahoo tutorial。 问题是跨越多个块大小的文档会被拆分,每个拆分都会转到不同的映射器。有一些可用的输入格式,例如XMLInputFormat。如果您可以将输入视为键值格式,您也可以将其预处理为SequenceFileFormat,这是我认为的理想选择。