Join 使用字符串键的Hadoop连接

Join 使用字符串键的Hadoop连接,join,hadoop,mapreduce,Join,Hadoop,Mapreduce,我正在实现一个reduce-side连接来查找数据库a和B之间的匹配项。数据集中的两个文件每行都包含一个json对象。join键是每个记录的name属性,因此,映射器提取json的名称并将其作为键传递,将json本身作为值传递。reducer必须为相同或相似的人名合并jsons对象 问题是,我需要使用字符串相似性匹配算法对密钥进行分组,例如,必须将John White视为等于John White Lennon 我曾尝试使用分组比较器来实现这一点,但它并没有按预期工作 如何实现这一点 提前谢谢 您

我正在实现一个reduce-side连接来查找数据库a和B之间的匹配项。数据集中的两个文件每行都包含一个json对象。join键是每个记录的name属性,因此,映射器提取json的名称并将其作为键传递,将json本身作为值传递。reducer必须为相同或相似的人名合并jsons对象

问题是,我需要使用字符串相似性匹配算法对密钥进行分组,例如,必须将John White视为等于John White Lennon

我曾尝试使用分组比较器来实现这一点,但它并没有按预期工作

如何实现这一点


提前谢谢

您在此请求的内容可以描述为集合相似性联接,其中集合是,例如,令牌集合,或每行的n-gram。下面是一个示例,它描述了如何在MapReduce中实现这一点。我希望您觉得它有用。

我想我误解了MapReduce的一些概念。难道没有办法覆盖Hadoop对键的分组方式吗?例如,在实现二次排序时,您可以将分组设置为仅通过自然键完成,这基本上是一种compareTo方法,因此,我认为可以使用字符串相似性匹配算法来完成此分组。这篇文章似乎非常有用,谢谢,我将稍后阅读!但我有点困惑和好奇,想知道我做错了什么,或者我传递了什么概念。我只使用一个减速机,所以我想自定义分区将不会有任何效果。这是真的。我看到了你的另一个问题,删除了我之前的评论。这份文件非常有用,所以我接受了你的回答,因为这似乎是实现这一点的最佳方式。然而,它与规范化数据集相关,并且似乎不处理令牌的相似性,这是我的工作的一个关键要求。作为结束语,你能确认我的最后一句话吗?相反,这是一个非常普遍的定义,可以涵盖文档的相似性,如果它们被表示为一组标记的话。(顺便说一句,我不是作者之一——只是想说清楚:)