我有一些hadoop文档相似性项目,我正在工作,我被困在某些部分。这种情况看起来是这样的(我有一个存储在csv文件中的文档术语索引表)
“”,t1,t2,t3,t4,。。。。
文件1,f11,f12,f13,f14,。。。。
doc2,f21,f22,f23,f24,。。。。
文件3,f31,f32,f33,f34,。。。。
.
.
.
其中f12表示文件1(doc1)中第2项(t2)的频率
另一方面,我有一个查询文件,其中包含需要搜索其最近或类似文档的查询
“”,t1,t3,t122,t34,。。。。
q1、f11、f12、f13、f14,。。。。
q2,f21,f22,f23,f24,。。。。
q3,f31,f32,f33,f34,。。。。
.
.
. 但是这里的术语可能包含不同的术语,所以我需要找到这两个术语的叉积(术语索引和查询),以便找到查询和现有文档之间的距离
这个问题包含两个部分:第一,如何读取每个csv文件的头文件以将它们存储在某个termvector中,因为文件将被分割成不同的机器。
第二,如何在这两个文件上做叉积,以便找到相似性(创建一个新文档,可以包含所有可能的术语(维度),以便找到相似性)
我计划写一些k-近邻算法来找出我应该使用哪些工具的相似性,pig,hive,mahout。
2条答案
按热度按时间8oomwypt1#
关于mapreduce design patterns on cartesian product一书有单独一章,并给出了源代码。
ngynwnxp2#
是的,@vefthym答案,我一直在读同一本书的同一章!
但是,运行时非常长!按照书中的方法,对于包含20000条记录的600kb数据集,运行笛卡尔产品需要10个多小时!虽然我知道对于20000条记录,计算量将接近2亿次,i/o访问量将达到4亿次,这是巨大的,但我觉得它在一个相当于gb或tb的大数据集上工作是不切实际的。
我正在联系作者,看看他是否得到了相同的运行时间。会让你们知道的