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

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

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

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

我想要这个:

  1. col1 col2 group
  2. 1 2 1
  3. 1 3 1
  4. 2 3 1
  5. 4 5 2
  6. 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找出解决方案:

  1. from graphframes import *
  2. vertices = sqlContext.createDataFrame([
  3. ("A", 1),
  4. ("B", 2),
  5. ("C", 3),
  6. ("D", 4),
  7. ("E", 5),
  8. ("F", 6)], ["name", "id"])
  9. edges = sqlContext.createDataFrame([
  10. (1, 2),
  11. (1, 3),
  12. (2, 3),
  13. (4, 5),
  14. (5, 6)], ["src", "dst"])
  15. g = GraphFrame(vertices, edges)
  16. result = g.connectedComponents()
  17. result.show()

再次感谢弗格森。

展开查看全部

相关问题