我希望将两个数据框A,B连接到一个没有重复行的新数据框(如果B中的行已经存在于A中,请不要添加):
Dataframe A:
A B
0 1 2
1 3 1
数据框B:
A B
0 5 6
1 3 1
我希望合并它们,以便最终的DataFrame具有以下形状:
最终数据框:
A B
0 1 2
1 3 1
2 5 6
我该怎么做?
答案 0 :(得分:2)
pyspark.sql.DataFrame.union
和pyspark.sql.DataFrame.unionAll
似乎与重复产生相同的结果。
相反,您可以使用直接SQL获得所需的输出:
dfA.createTempView('dataframea')
dfB.createTempView('dataframeb')
aunionb = spark.sql('select * from dataframea union select * from dataframeb')
使用SQL生成预期/正确的结果。
答案 1 :(得分:1)
为了删除任何重复的行,只需使用union()后跟distinct()。
文档中提到 http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html
“联盟(其他) 返回一个新的DataFrame,其中包含此帧和另一帧中的行组合。
这相当于SQL中的UNION ALL。要执行SQL样式的集合联合(对元素进行重复数据删除),请使用此函数,后跟不同的。“