我有一个算法可以通过大型数据集读取一些文本文件并在这些行中搜索特定术语。我已经用 Java 实现了它,但我不想发布代码,这样看起来我并不是在寻找某人为我实现它,但我确实需要很多帮助!!!这不是我的项目计划的,但事实证明数据集很大,所以老师告诉我我必须这样做。
编辑(我没有澄清我以前的版本)我拥有的数据集在 Hadoop 集群上,我应该对其进行 MapReduce 实现
我正在阅读有关 MapReduce 的内容,并认为我首先执行标准实现,然后使用 mapreduce 执行它会更容易/更少。但并没有发生,因为算法非常愚蠢而且没什么特别的,而 map reduce ......我无法全神贯注。
下面是我的算法的伪代码
LIST termList (there is method that creates this list from lucene index)
FOLDER topFolder
INPUT topFolder
IF it is folder and not empty
list files (there are 30 sub folders inside)
FOR EACH sub folder
GET file "CheckedFile.txt"
analyze(CheckedFile)
ENDFOR
END IF
Method ANALYZE(CheckedFile)
read CheckedFile
WHILE CheckedFile has next line
GET line
FOR(loops through termList)
GET third word from line
IF third word = term from list
append whole line to string buffer
ENDIF
ENDFOR
END WHILE
OUTPUT string buffer to file
此外,如您所见,每次调用“分析”时,都必须创建新文件,我知道 map reduce 很难写入许多输出???
我理解 mapreduce 的直觉,我的示例似乎非常适合 mapreduce,但是当谈到这样做时,显然我还不够了解,我被卡住了!
请帮忙。
最佳答案
您可以只使用一个空的 reducer,并对您的作业进行分区,以便为每个文件运行一个映射器。每个映射器都会在您的输出文件夹中创建自己的输出文件。
关于java - 需要帮助使用 map Hadoop MapReduce 实现此算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2986271/