首页 > 解决方案 > 如何在 pyspark 中使用“不存在”的 SQL 条件?

问题描述

我在 Hive 上有一个表,我正在尝试在该表中插入数据。
我正在从 SQL 中获取数据,但我不想插入 Hive 表中已经存在的 id。我正在尝试使用与不存在相同的条件。我在 Airflow 上使用PySpark

标签: pythonhivepysparkairflowpyspark-sql

解决方案


existsSpark 中不存在该运算符,但有 2 个连接运算符可以替换它:left_antileft_semi.

例如,如果您想df在配置单元表中插入数据框target,您可以执行以下操作:

new_df = df.join(
    spark.table("target"),
    how='left_anti',
    on='id'
)

然后你写new_df在你的桌子上。

left_anti允许您仅保留不满足连接条件的行(相当于not exists)。的等价物existsleft_semi


推荐阅读