从文件A中提取包含文件B中的单词的行

时间:2015-01-03 05:24:41

标签: text bigdata extraction

我有一个大文本文件,大于1gb大,包含数据行 线。这是文本文件A.txt

然后我有第二个文件,文本文件B.txt,其中包含30,000个唯一单词 我想从文本文件A中提取,以及其余部分 在文本文件A中找到该单词的行。

这方面的一个例子是:

- 文本文件A -

dog in house
cat at school
kid in playground
tom at oaks
so much stuff
inhouse cool stuff

- 文本文件B -

house
oaks

- 结果文件输出 -

dog in house
tom at oaks
inhouse cool stuff

我将如何以尽可能最快的方式做到这一点?市场上有没有专门从事此类任务的软件?

我不知道任何编程语言,所以如果有人知道编写代码的解决方案,我需要有关如何执行它的新手指令。

我已经在google上搜索了数小时和数小时,希望能找到解决方案,但却没有任何意义。

先谢谢

1 个答案:

答案 0 :(得分:0)

使用Java MapReduce可以执行以下操作:

  1. 在HDFS中加载文件A
  2. 逐行传递作为Mapper的输入。
  3. 将文件B共享为分布式缓存,因此所有Mapper都可以访问它,而不会被分成块。
  4. 在映射器中检查接收到的输入行(来自文件A),以查找文件B中存在的任何单词(共享为分布式缓存)。
  5. 如果没有找到,请跳过该行。
  6. 如果找到将该行输出到Reducer。
  7. 从Reducer写入到输出文件。