[英]How to subtract DataFrames using subset of columns in Apache Spark
如何使用Dataframe2对Dataframe1执行过滤操作。 我想从DataFrame1中删除以下条件的行
Dataframe1.col1 = Dataframe2.col1
Dataframe1.col2 = Dataframe2.col2
我的问题与减去两个数据帧不同,因为减去时我们使用所有列,但在我的问题中我想使用有限的列数
加入 “ left_anti ”
scala> df1.show
+----+-----+-----+
|col1| col2| col3|
+----+-----+-----+
| 1| one| ek|
| 2| two| dho|
| 3|three|theen|
| 4| four|chaar|
+----+-----+-----+
scala> df2.show
+----+----+-----+
|col1|col2| col3|
+----+----+-----+
| 2| two| dho|
| 4|four|chaar|
+----+----+-----+
scala> df1.join(df2, Seq("col1", "col2"), "left_anti").show
+----+-----+-----+
|col1| col2| col3|
+----+-----+-----+
| 1| one| ek|
| 3|three|theen|
+----+-----+-----+
可能重复的项目: Spark:如果两个数据集的库仑数完全相同,则减去两个 DataFrames
如果要自定义联接条件,则可以使用“ anti”联接。 这是pysaprk版本
创建两个数据框:
数据框1:
l1 = [('col1_row1', 10), ('col1_row2', 20), ('col1_row3', 30)
df1 = spark.createDataFrame(l1).toDF('col1','col2')
df1.show()
+---------+----+
| col1|col2|
+---------+----+
|col1_row1| 10|
|col1_row2| 20|
|col1_row3| 30|
+---------+----+
数据框2:
l2 = [('col1_row1', 10), ('col1_row2', 20), ('col1_row4', 40)]
df2 = spark.createDataFrame(l2).toDF('col1','col2')
df2.show()
+---------+----+
| col1|col2|
+---------+----+
|col1_row1| 10|
|col1_row2| 20|
|col1_row4| 40|
+---------+----+
使用减法api:
df_final = df1.subtract(df2)
df_final.show()
+---------+----+
| col1|col2|
+---------+----+
|col1_row3| 30|
+---------+----+
使用left_anti:
加盟条件:
join_condition = [df1["col1"] == df2["col1"], df1["col2"] == df2["col2"]]
最后加入
df_final = df1.join(df2, join_condition, 'left_anti')
df_final.show()
+---------+----+
| col1|col2|
+---------+----+
|col1_row3| 30|
+---------+----+
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.