当前位置:  开发笔记 > 大数据 > 正文

Hadoop从另一个文件中的一个文件中搜索单词

如何解决《Hadoop从另一个文件中的一个文件中搜索单词》经验,为你挑选了1个好方法。

我想构建一个hadoop应用程序,它可以读取一个文件中的单词并在另一个文件中搜索.

如果单词存在 - 它必须写入一个输出文件如果该单词不存在 - 它必须写入另一个输出文件

我在hadoop中尝试了几个例子.我有两个问题

两个文件各约200MB.检查另一个文件中的每个单词可能会导致内存不足.有没有其他方法可以做到这一点?

如何将数据写入不同的文件,因为hadoop的reduce阶段的输出只写入一个文件.是否可以使用过滤器来减少相位以将数据写入不同的输出文件?

谢谢.



1> Leonidas..:

我该怎么做:

    通过单词"map"分割值,发出(,)(*1)

    你会进入'减少':( ,)

    检查源列表(对于两个/所有源可能很长)

    如果并非所有源都在列表中,则每次都发出(,)

    job2:job.setNumReduceTasks()

    job2:在'map'中发出(,)

    job2:为'reduce'中的每个发出all(null,)

你最终会得到与不同一样多的reduce-outputs,每个都包含文档中缺少的单词.您可以在'reduce'开头写出 ONCE来标记文件.

(*1)如何找到地图中的来源(0.20):

private String localname;
private Text outkey = new Text();   
private Text outvalue = new Text();
...
public void setup(Context context) throws InterruptedException, IOException {
    super.setup(context);

    localname = ((FileSplit)context.getInputSplit()).getPath().toString();
}

public void map(Object key, Text value, Context context)
    throws IOException, InterruptedException {
...
    outkey.set(...);
    outvalue.set(localname);
    context.write(outkey, outvalue);
}

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有