【发布时间】:2010-10-29 16:23:20
【问题描述】:
我是 hadoop 新手。我想和你一起运行一些我想出的方法。
问题:
2 个数据集:A 和 B。
两个数据集都代表歌曲:一些顶级属性、标题 (1..)、表演者 (1..)。
我需要根据标题和表演者使用相等或模糊算法(例如 levenshtein、jaccard、jaro-winkler 等)来匹配这些数据集。
数据集大小为:A=20-30M,B~=1-6M。
所以这里有一些我想出的方法:
将数据集 B(最小)加载到 HDFS。对数据集 A(biggest) 使用 mapreduce,其中:
map阶段:对A中的每条记录访问HDFS并拉取记录B进行匹配;
reduce 阶段:写入 id 对以优化的形式将数据集 A 加载到分布式缓存(即 jboss 缓存)中以加快搜索速度。对数据集 B 使用 mapreduce,其中:
map阶段:针对B查询分布式缓存中的每条记录进行匹配
reduce : 写入 id 对使用 mapreduce 连接两个数据集,其中
映射阶段:从集合 A 和集合 B 获取记录,进行匹配
减少阶段:相同
(我对此很模糊。第一个:join 将是具有数万亿条记录的笛卡尔积;第二个:不确定 hadoop 如何跨集群并行化)使用 hive(我现在正在研究如何插入自定义函数来进行字符串匹配)
我正在寻找指针,哪种方法是最佳候选方法,或者可能还有其他一些我看不到的方法。
【问题讨论】:
标签: hadoop