我有一些hadoop文档相似项目,我正在做,而且我被困在了某个部分。情况如下(我在csv文件中存储了一个文档术语索引表)
"",t1,t2,t3,t4,……
doc1,f11,f12,f13,f14 .
doc2,f21,f22,f23,f24 .
doc3,f31,f32,f33,f34 .
。
。
。
其中f12指term2(t2)在document1(doc1)中的频率
另一方面,我有一个查询文件,其中包含需要搜索的查询,以查找它们最近或类似的文档。
"",t1,t3,t122,t34,……
q1,f11,f12,f13,f14 .
q2,f21,f22,f23,f24 .
q3,f31,f32,f33,f34 .
。
。
。但是这里的术语可能包含不同的术语,所以我需要找到这两个术语(术语索引和查询)的交叉乘积,以便找到查询和现有文档之间的距离。
问题包括两个部分:first,如何读取这些csv文件的头,以便将它们存储在特定的条件向量中,因为该文件将被拆分成不同的机器。
第二次,如何在这两个文件上生成交叉积,以找到相似之处(创建一个新文档,该文档可以包含所有可能的术语(维度)以找到相似性)。
我计划写一些K近邻算法,找出我应该使用的工具,猪,蜂巢,马赫特。
发布于 2013-12-03 08:44:22
关于笛卡尔积的书MapReduce设计模式有一个单独的章节,并给出了源代码。
发布于 2013-12-16 03:11:12
是的,我正在读同一本书的同一章节!
但是,运行时非常长!按照书中的方法,一个包含20,000条记录的600 in数据集,运行笛卡尔产品需要超过10个小时!虽然我知道对于2万条记录,计算将接近2亿倍,I/O访问将是4亿倍,这是巨大的,我觉得它在一个相当于GB或TB的大数据集上工作是不切实际的。
我正在与作者联系,看看他是否有相同的运行时。会让你们知道
https://stackoverflow.com/questions/20326956
复制相似问题