Hadoop Map Reduce 倒排索引检索行号

Hadoop Map Reduce Inverted Index Retrieve Line Number

我正在尝试使用 Hadoop Map Reduce 构建倒排索引搜索,作为输入文本文件,并尝试实现以下输出:word: (file#1, line#1, line#2, ….) (文件#4, line#1, line#2,…) …)

经过几个小时的研究,我在网上找到了解决方案:

https://examples.javacodegeeks.com/enterprise-java/apache-hadoop/apache-hadoop-recordreader-example/.

需要自定义 RecordReader class 以及自定义 FileInputFileFormat,以便在通过 map 方法完成拆分时将行号设置为键。在 RecordReader 实现中,可以声明自定义字段并完全管理输入文件的读取。

在这种情况下,例如在 RecordReader 自定义实现中添加一个名为 lineNumber 的新 int 字段就足够了,并在读取一行时递增它(nextKeyValue() 方法)。