合并 Spark 数据框中的两列以形成单列

Las*_*ang 3 graph apache-spark pyspark

我有一个包含两列的 Spark 数据框;src_edgedest_edge。我只是想创建新的 Spark 数据框,以便它包含一个包含来自和id的值的列。src_edgedest_edge

src dst
 1   2
 1   3
Run Code Online (Sandbox Code Playgroud)

我想创建df2为:

id
1
1
2
3
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我还想创建df2不重复的值。有谁知道如何做到这一点?

 id
 1
 2
 3
Run Code Online (Sandbox Code Playgroud)

pau*_*ult 5

更新

最简单的事情可能是选择每一列,union然后调用distinct

from pyspark.sql.functions import col
df2 = df.select(col("src").alias("id")).union(df.select(col("dst").alias("id"))).distinct()
df2.show()
#+---+
#| id|
#+---+
#|  1|
#|  3|
#|  2|
#+---+
Run Code Online (Sandbox Code Playgroud)

您还可以通过外连接来完成此操作:

df2 = df.select(col("src").alias("id"))\
    .join(
        df.select(col("dst").alias("id")),
        on="id",
        how="outer"
    )\
    .distinct()
Run Code Online (Sandbox Code Playgroud)