[英]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.