当前位置:  开发笔记 > 大数据 > 正文

使用Hadoop进行相似性连接

如何解决《使用Hadoop进行相似性连接》经验,为你挑选了1个好方法。

我是hadoop的新手.我想提出一些我想出来的方法.

问题:
2个数据集:A和B.
两个数据集代表歌曲:一些顶级属性,标题(1 .. ),表演者(1 ..).
我需要使用基于标题和表演者的相等或模糊算法(例如levenshtein,jaccard,jaro-winkler等)来匹配这些数据集.
数据集大小为:A = 20-30M,B~ = 1-6M.

所以这里有我提出的方法:

    将数据集B(最小)加载到HDFS中.对数据集A(最大)使用mapreduce,其中:
    map phase:对于A访问HDFS中的每条记录,并拉出记录B进行匹配;
    reduce phase:写入id对

    将数据集A加载到优化形式的distirubted缓存(即jboss缓存)中以加速搜索.对数据集B使用mapreduce,其中:
    map phase:对于B查询中的每个记录,用于匹配的分布式缓存
    reduce:写入id对

    使用mapreduce连接两个数据集,其中
    map阶段:从集合A和集合B获取记录,匹配
    减少阶段:相同
    (我对第一个模糊不清.第一个:连接将是具有万亿个记录的笛卡尔积;第二个:不确定hadoop如何跨群集平行化)

    使用配置单元(我正在寻找现在试图找出如何插入将进行字符串匹配的自定义函数)

我正在寻找一个指针,这种方法将是最好的候选人,或者也许还有一些我看不到的方法.



1> 小智..:

您可能会发现本文和代码很有用:

使用MapReduce进行高效并行集相似性连接

我个人在Cascading中实现了它,效果很好.不幸的是,代码过于特定于域而无法发布.

上述工作的要点是减少与非常可能相似的候选对的连接数,然后可以使用任何相关算法混合来直接比较候选对(在MR连接中).一个好的副作用是可以在整个群集中均匀地执行此连接,而无需重复比较.

最终,这是在两个独立集之间或在同一集合内执行交叉连接的优化(第二种情况与第一种情况略有不同).

披露:我是Cascading的作者

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有