Pyspark 删除 table 中与 table 两个中的行匹配的行
Pyspark Delete rows in table one which matches rows in table two
问题陈述
这是我的用例:
我有 2 个表,Today_data
和 Yesterday_data
,例如:
Today_data:
Id Value
1 1_data
2 2_data
3 3_data
Yesterday_data:
Id Value
2 2_data
4 4_data
8 8_data
如果行匹配 Yesterday_data
行,我想删除 Today_data
df 行。
预期结果
Id Value
1 1_data
3 3_data
采取的方法
我认为这应该是一个简单的左连接,其中 Today_data
将在左侧,但是在我阅读了 pyspark 中的所有连接操作后:https://sparkbyexamples.com/pyspark/pyspark-join-explained-with-examples/#pyspark-join-types,我不知道看到他们中的任何一个都可以解决我的问题。有什么想法吗?
您正在寻找left_anti
加入:
today_df = spark.createDataFrame([(1, "1_data"), (2, "2_data"), (3, "3_data")], ["Id", "Value"])
yesterday_df = spark.createDataFrame([(2, "2_data"), (4, "4_data"), (8, "8_data")], ["Id", "Value"])
result = today_df.join(yesterday_df, ["Id"], "left_anti")
result.show()
#+---+------+
#| Id| Value|
#+---+------+
#| 1|1_data|
#| 3|3_data|
#+---+------+
这个在您提供的 link 的 this section 中有解释。
问题陈述
这是我的用例:
我有 2 个表,Today_data
和 Yesterday_data
,例如:
Today_data:
Id Value
1 1_data
2 2_data
3 3_data
Yesterday_data:
Id Value
2 2_data
4 4_data
8 8_data
如果行匹配 Yesterday_data
行,我想删除 Today_data
df 行。
预期结果
Id Value
1 1_data
3 3_data
采取的方法
我认为这应该是一个简单的左连接,其中 Today_data
将在左侧,但是在我阅读了 pyspark 中的所有连接操作后:https://sparkbyexamples.com/pyspark/pyspark-join-explained-with-examples/#pyspark-join-types,我不知道看到他们中的任何一个都可以解决我的问题。有什么想法吗?
您正在寻找left_anti
加入:
today_df = spark.createDataFrame([(1, "1_data"), (2, "2_data"), (3, "3_data")], ["Id", "Value"])
yesterday_df = spark.createDataFrame([(2, "2_data"), (4, "4_data"), (8, "8_data")], ["Id", "Value"])
result = today_df.join(yesterday_df, ["Id"], "left_anti")
result.show()
#+---+------+
#| Id| Value|
#+---+------+
#| 1|1_data|
#| 3|3_data|
#+---+------+
这个在您提供的 link 的 this section 中有解释。