Apache spark 合并spark dataframe中的两列以形成单列

Apache spark 合并spark dataframe中的两列以形成单列,apache-spark,graph,pyspark,Apache Spark,Graph,Pyspark,我有一个带两列的Spark数据框;src_边和dest_边。我只想创建一个新的spark数据框,这样它就包含一个列id,其中的值来自src_edge和dest_edge 我想将df2创建为: 如果可能,我还希望创建没有重复值的df2。有人知道怎么做吗 id 1 2 3 使用array和explode创建一个新列,以合并并展平两列。然后,要删除重复项,请使用dropDuplicates: 使用array和explode创建一个新列,以合并并展平两列。然后,要删除重复项,请使用dropDu

我有一个带两列的Spark数据框;src_边和dest_边。我只想创建一个新的spark数据框,这样它就包含一个列id,其中的值来自src_edge和dest_edge

我想将df2创建为:

如果可能,我还希望创建没有重复值的df2。有人知道怎么做吗

 id
 1
 2
 3
使用array和explode创建一个新列,以合并并展平两列。然后,要删除重复项,请使用dropDuplicates:

使用array和explode创建一个新列,以合并并展平两列。然后,要删除重复项,请使用dropDuplicates:

更新

最简单的方法可能是选择每个列,合并它们,然后调用distinct:

从pyspark.sql.functions导入col df2=df.selectcolsrc.aliasid.uniondf.selectcoldst.aliasid.distinct df2.show +--+ |身份证| +--+ | 1| | 3| | 2| +--+ 您还可以通过外部联接来实现这一点:

df2=df.selectcolsrc.aliasid\ 参加 df.selectcoldst.aliasid, on=id, 如何=外部 \ 不同的 更新

最简单的方法可能是选择每个列,合并它们,然后调用distinct:

从pyspark.sql.functions导入col df2=df.selectcolsrc.aliasid.uniondf.selectcoldst.aliasid.distinct df2.show +--+ |身份证| +--+ | 1| | 3| | 2| +--+ 您还可以通过外部联接来实现这一点:

df2=df.selectcolsrc.aliasid\ 参加 df.selectcoldst.aliasid, on=id, 如何=外部 \ 不同的
id
1
1
2
3
 id
 1
 2
 3
from pyspark.sql.functions import array, explode

df2 = df.select(explode(array("src", "dst")).alias("id"))
  .dropDuplicates()