我正在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器。有人愿意详细说明,或提供一些关于我应该做什么的建议吗?
1条答案
按热度按时间w6mmgewl1#
我想我想出了自己的解决办法。我所做的不是寻找Map器计数,而是在每行末尾添加一个文本,后跟数字,如“这是一个文本,n:1”。我曾经
gsub
创建增量。在Map器中,当我读取行时,我也读取值n:1。自从n
每行增加一个值,无论哪个Map器读取哪行,它都会得到正确的n值。我用的是n
为每一行(文档)创建一个新键,如((word@doc=n),1)其中n
是每个行号的值。