在hadoop中交叉产品和阅读标题

时间:2013-12-02 11:16:03

标签: hadoop header similarity cross-product

我有一些我正在研究的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。

2 个答案:

答案 0 :(得分:1)

关于笛卡尔积的书MapReduce Design Patterns有一个单独的章节,给出了源代码。

答案 1 :(得分:1)

对@vefthym回答是的,我在同一本书中读过同一章!

但是,运行时间非常长!按照书中的方式,对于包含20,000条记录的600kb数据集,运行笛卡尔积需要10个小时!虽然我知道有20,000条记录,但计算量将接近200万次,I / O访问量将达到400万次,这是巨大的,我认为它对于一个大到GB或TB的大数据集是不切实际的。

我正在联系作者,看他是否有相同的运行时间。会让你们知道