我正在使用spark 1.6和python 2.7,我有一个如下所示的火花数据框:
df = sqlContext.createDataFrame([
("ab", "bc"),
("bc", "cd"),
("cd", "ab"),
("bc", "ab"),
("cd", "bc"),
("ab", "cd"),
], ["col1", "col2"])
此数据框包含图形的顶点为" col1" to" col2"。我想要做的是删除重复的col1和col2对。 我的方法是什么,比较col1和col2,如果col2<然后col1交换列,然后执行不同的操作。
操作完成后,结果应为:
+------------+
| col1 col2 |
+------------+
| ab bc |
| bc cd |
| cd ab |
+------------+
基本上,我正在尝试创建一个只有有向边的图形。
答案 0 :(得分:3)
您可以简单地执行以下操作
from pyspark.sql import functions as F
finaldf = df.withColumn('col1_1', F.when(df.col2 < df.col1, df.col2).otherwise(df.col1)) \
.withColumn('col2_1', F.when(df.col2 < df.col1, df.col1).otherwise(df.col2))\
finaldf.select(finaldf.col1_1.alias("col1"), finaldf.col2_1.alias("col2")).distinct().show()
这里完成的是创建两个新列应用col2 < col1
逻辑,最后select
distincts
。