在mapper-hadoop中通过文档编号区分字数?

lndjwyie  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(707)

我正在r上编写一个Map器函数(使用rhipe实现map reduce)。mapper函数应该读取文本文件并创建语料库。现在,r已经有了一个名为 tm 它进行文本挖掘并创建documentmatrix。如果你想了解更多关于“tm”的知识,请看这里。
但是在map reduce中使用这个包的问题是矩阵被转换成list,并且很难从这个混乱的“list”中创建reduce中的矩阵。我在这个网站上找到了一个使用MapReduce创建语料库的算法,但是我对如何找到mapper文档的名称或一些唯一标识有点困惑。
对于我拥有的196mb文本文件,hadoop生成了4个Map器(blocksize=64mb)。如何对键值对进行分类,以便Map程序将键值对作为 ((words@document),1) . 这篇文章解释得很好。但是,我在理解mapper如何在多个mapper之间区分它读取的文档编号时遇到了一点困难。据我所知,Map器计数器只针对相应的Map器。有人愿意详细说明,或提供一些关于我应该做什么的建议吗?

w6mmgewl

w6mmgewl1#

我想我想出了自己的解决办法。我所做的不是寻找Map器计数,而是在每行末尾添加一个文本,后跟数字,如“这是一个文本,n:1”。我曾经 gsub 创建增量。在Map器中,当我读取行时,我也读取值n:1。自从 n 每行增加一个值,无论哪个Map器读取哪行,它都会得到正确的n值。我用的是 n 为每一行(文档)创建一个新键,如((word@doc=n),1)其中 n 是每个行号的值。

相关问题