我有这个问题。我有一组非常大的键值对(以百万计),其中某个唯一 id 作为键,一个字符串作为值(对于 2 个或更多键,字符串可能完全相同)。我必须将这些键值对组合在一起,因为第 1 组包含一些 id 字符串对,第 2 组包含一些其他对等。分组需要根据字符串之间的相似性进行,这些字符串实际上是这些对的值。我已经在这些字符串之间实现了 Levenshtein 距离,并将距离小于阈值距离的对组合在一起。我用传统的(非常糟糕的)方式实现了它:将每个字符串相互比较。
我需要一些关于如何优化它的提示。我可以在 Hadoop 中使用 Map-Reduce 将键值对组合在一起吗?我认为 map 和 reduce 函数的输入是单独的和独立的,因此不能“分组”在一起。这是一个k-means聚类问题吗?你能推荐一些其他更快更有效的技术吗?谢谢。