sql—创建一个对值进行分组的列

l7mqbcuq  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(270)

若要继续,我希望将关联的值放入相同的组中:
以下是我所拥有的:

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或Pypark

dm7nw8vv

dm7nw8vv1#

根据a.r.ferguson的回答,我能够使用Pypark和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()

再次感谢弗格森。

相关问题