0

再開するには、関連付けられている同じグループの値に入れたい:

これが私が持っているものです:

col1    col2
1        2
1        3
2        3
4        5
5        6

そして私はこれが欲しい:

col1    col2    group
1        2        1
1        3        1
2        3        1
4        5        2
5        6        2

これらの 2 つのグループを作成するには、手動で行う場合の手順を次に示します。

  • 行 1 : 1 は 2 に関連付けられているため、同じグループに属しています。これをグループ 1 と呼びましょう。
  • 行 2 : 1 はグループ 1 にあり、現在 1 は 3 に関連付けられているため、3 もグループ 1 にあります
  • 行 3 : 2 はグループ 1 にあり、3 もグループ 1 にあるため、グループ 1 に属します。
  • 行 4: 4 はグループ 1 の値ではないため、2 という新しいグループを作成し、それを 5 に関連付けます。
  • 行 5 : 5 にはグループ 2 があり、6 に関連付けられているため、グループ 2 があります。

これをSQLで解決するという考えはありますか。私がHiveまたはpysparkを使用していることを知っている

4

1 に答える 1

1

ARFergusonの回答に基づいて、pysparkとgraphframeを使用して解決策を見つけることができました:

from graphframes import *
vertices = sqlContext.createDataFrame([
  ("A",  1),
  ("B",  2),
  ("C",  3),
  ("D",  4),
  ("E",  5),
  ("F",  6)], ["name",  "id"])
edges = sqlContext.createDataFrame([
  (1, 2),
  (1, 3),
  (2, 3),
  (4, 5),
  (5, 6)], ["src", "dst"])
g = GraphFrame(vertices, edges)
result = g.connectedComponents()
result.show()

再びファーガソンに感謝します。

于 2016-03-12T03:51:24.657 に答える