问题
我们有记录,比如r i ,其中i = 0,...,n。 n可能很大(数百亿)。
每个记录都有多个键,k ij ,其中j = 0,...,m。 m很小(比如20)
我们说,r p = r q ,如果k p0 = k q0 ,k p1 = k q1 ,...,或,k pm = k qm
即,如果至少有一个键相等,则记录相等。我们需要找到这样的记录集并为这些集合生成唯一的ID。
方法
运行m map-reduce作业,其中每个作业减少一个键。
因此,对于作业i,映射器发出(r p ,k i )和reducer得到({r 1 ,... ,r p },k i )
在所有m个作业结束时,我们将拥有一组具有相同键的记录。
S k = {r l }
我们预计k会小于n但仍然可能是数亿,而l是一个小数字(比如2到5000之间)
要获得我们的最终结果,我们需要合并上述至少有一个成员的集合。
我有以下问题:
答案 0 :(得分:0)
我意识到这是一个ConnectedComponent问题并且有众所周知的解决方案。