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

如果我手动进行,则在此处生成这两组是步骤。

  • 第 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 回答