簡體   English   中英

Pyspark 刪除表一中與表二中的行匹配的行

[英]Pyspark Delete rows in table one which matches rows in table two

問題陳述

這是我的用例:我有 2 個表, Today_dataYesterday_data ,例如:

今日數據:

Id    Value
1     1_data
2     2_data
3     3_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|
#+---+------+

您提供的鏈接的本節對此進行了說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM