【问题标题】:Distinguish word count by document number in mapper - Hadoop?通过映射器中的文档编号区分字数 - Hadoop?
【发布时间】:2014-11-27 15:34:10
【问题描述】:

我正在 R 上编写一个映射器函数(使用 Rhipe 进行 map-reduce)。 mapper 函数应该读取文本文件并创建语料库。现在,R 已经有了一个名为 tm 的包,它进行文本挖掘并创建 DocumentMatrix。如果您想了解更多关于 `tm' 的信息,请查看 here

但是在 map-reduce 中使用这个包的问题是矩阵被转换为列表,并且很难从这个混乱的“列表”中创建一个矩阵。我在 this website 中找到了一种使用map-reduce 创建语料库的算法,但我对如何找到映射器文档的名称或某些唯一标识感到有些困惑。

对于我拥有的 196MB 文本文件,hadoop 生成了 4 个映射器(blocksize=64MB)。如何对键值对进行分类,以便映射器将该对发送为((words@document),1)。这篇文章很好地解释了它。但是,我在理解映射器如何区分它在多个映射器之间读取的文档编号时遇到了一些麻烦。据我了解,映射器计数器仅针对相应的映射器。有人愿意详细说明,或提供一些关于我应该做什么的建议吗?

【问题讨论】:

    标签: r hadoop mapreduce


    【解决方案1】:

    我想我想出了自己的解决方案。我所做的不是寻找映射器计数,而是在每行末尾添加一个文本,后跟数字,如“这是一个文本,n:1”。我使用gsub 创建增量。在映射器中,当我读取该行时,我还读取了 n:1 的值。由于每行n 都会增加,因此无论哪个映射器正在读取哪一行,它都会获得正确的 n 值。然后,我使用 n 的值为每一行(文档)创建一个新键,如 ((word@doc=n),1) 其中n 是每个行号的值。

    【讨论】:

      猜你喜欢
      • 2014-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 2013-07-18
      • 2017-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多