java - 需要帮助使用 map Hadoop MapReduce 实现此算法

标签 java hadoop mapreduce

我有一个算法可以通过大型数据集读取一些文本文件并在这些行中搜索特定术语。我已经用 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/

相关文章:

java - 为什么没有 asyncContext.cancel()

java - Eclipse, "Exception in thread "线程 - 2"java.util.ConcurrentModificationException"

java - Hadoop <init> 没有这样的方法异常

java - 为什么 Hadoop 无法在本地模式下找到这个文件,即使它存在?

hadoop - 何时将本地系统中的文件移至HDFS

java - JPQL:查询多列时,什么样的对象包含结果列表?

java - java 中的预测文本

azure - SPARK:在将Azure Blob存储与Spark群集一起使用时,如何访问AzureFileSystemInstrumentation?

java - 如何创建和配置 Hadoop 客户端脚本?

hadoop - 使用过滤器从Pig脚本产生单个输出