2016-10-03 107 views
0

问题地图,减少多个键

我们有记载,说[R 其中i = 0,...,N。 n可能很大(数百亿)。

每个记录都有多个密钥,其中j = 0,...,m。 m小(比方说20)

我们说,R p = R q,如果k P0 = K Q0,K P1 = K Q1,...,中,k 下午 = K QM

即,记录是相等的,如果至少有一个他们的密钥是相等的。我们需要找到这样的记录集并为这些集生成唯一的ID。

方法

润米地图,减少就业岗位,每个岗位上的一个键减少。

因此,对于工作我,映射器发出(R p,K )和减速器得到({R ,...,R p},K

在所有m个作业结束时,我们将拥有一组具有相同密钥的记录。

小号ķ = {R}

我们预计k到小于n,但仍可能是数亿,和L是一个小数字(比如2至5000)

为了得到我们的最终结果,我们需要合并至少有一个共同成员的上述集合。

我有以下问题:

  1. 如何有效地合并这些集合?
  2. 或者,有没有其他方法可以解决这个问题?
+0

如何散列Key1-10? –

+0

顺便说一句,我意识到,运行多步骤map-reduce是行不通的。 @Ayush哈希k1-10是什么意思?有一个“超级钥匙”?那也不行。超级关键的平等并不意味着关键的平等。 –

+0

我编辑了我的问题以提供更清晰。 –

回答

0

我意识到它是一个ConnectedComponent问题并且有众所周知的解决方案。