我有一些我正在研究的hadoop文档相似性项目,我陷入了某种程度。情况看起来像这样(我有一个文档术语索引表存储在csv文件中
“”,t1,t2,t3,t4,....
DOC1,F11,F12,F13,F14,...
DOC2,F21,F22,F23,F24,...
doc3的,F31,F32,F33,F34,...
其中f12表示document1(doc1)
中term2(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。
答案 0 :(得分:1)
关于笛卡尔积的书MapReduce Design Patterns有一个单独的章节,给出了源代码。
答案 1 :(得分:1)
对@vefthym回答是的,我在同一本书中读过同一章!
但是,运行时间非常长!按照书中的方式,对于包含20,000条记录的600kb数据集,运行笛卡尔积需要10个小时!虽然我知道有20,000条记录,但计算量将接近200万次,I / O访问量将达到400万次,这是巨大的,我认为它对于一个大到GB或TB的大数据集是不切实际的。
我正在联系作者,看他是否有相同的运行时间。会让你们知道