首页 > 解决方案 > 将标识符保存在 PySpark 中的 exceptAll 中

问题描述

我很好奇是否有一种简单的方法可以在 PySpark 的 exceptALL 命令中保留标识 ID。例如,假设我有两个数据框(DF1,DF2),它们都有一个 ID 列和另一个列“A”。我想保留 DF1 中具有“A”值的行不在 DF2 中,所以基本上我试图将标识符与 exceptAll 的通常输出保持一致。我附上了具有理想输出的图像。

在此处输入图像描述

干杯!

标签: apache-sparkpyspark

解决方案


您可能正在 Spark 中寻找leftanti 加入

df1 = spark.createDataFrame([
  [1, "Dog"],
  [2, "Cat"],
  [3, "Dog"]
], ["id", "A"])

df2 = spark.createDataFrame([
  [4, "Dog"],
  [5, "Elmo"]
], ["id", "A"])

df1.join(df2, ["A"], "leftanti").show()

# +---+---+
# |  A| id|
# +---+---+
# |Cat|  2|
# +---+---+

推荐阅读