【发布时间】:2016-03-11 11:35:34
【问题描述】:
要恢复,我想将关联的值放入相同的组中:
这是我所拥有的:
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
【问题讨论】:
-
这个问题与查找图的连通分量相同。每行代表两个顶点之间的一条边。 Hive/MapReduce 不适合解决这个问题,但是有一个名为 GraphX 的 Spark 库,幸运的是,他们刚刚通过新的 GraphFrames 库 (databricks.com/blog/2016/03/03/introducing-graphframes.html) 添加了一个 Python API,因此希望您可以让集群管理员更新火花。
-
谢谢你的回答解决了问题。我使用了 graphframe 和 connectedComponents() 函数。
标签: sql hive pyspark pyspark-sql