r语言 - 在映射器 - Hadoop 中按文档编号区分字数



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

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

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

我想

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

最新更新