'replaceWhere' 会导致删除吗?

Blu*_*uds 2 apache-spark apache-spark-sql pyspark databricks

在这个命令(取自)中会replaceWhere导致记录删除吗?例如:命令中提到的日期范围有 1000 行。new df 只有100条,这样会导致删除900条记录吗?

df.write \
  .format("delta") \
  .mode("overwrite") \
  .option("replaceWhere", "date >= '2017-01-01' AND date <= '2017-01-31'") \
  .save("/mnt/delta/events")
Run Code Online (Sandbox Code Playgroud)

Kaf*_*els 5

此选项的工作方式几乎类似于动态覆盖分区,基本上您是在告诉 Spark 仅覆盖这些范围分区上的数据。此外,只有当您的数据帧符合条件时才会保存数据replaceWhere,否则,如果单行不匹配,Data written out does not match replaceWhere则会抛出异常。

Q: Would this cause a deletion of 900 records?
A: Yes, it would delete.
Run Code Online (Sandbox Code Playgroud)

我做了一个测试,创建一个包含 2 列的数据框

root
 |-- number: long (nullable = true)
 |-- even: integer (nullable = true)
Run Code Online (Sandbox Code Playgroud)

第一次运行将保存 1000 行,其中 500 行是偶数行,500 行是奇数行:

Q: Would this cause a deletion of 900 records?
A: Yes, it would delete.
Run Code Online (Sandbox Code Playgroud)

第一个数据帧输出

第二次运行将仅过滤偶数行并覆盖分区,其中even=1

root
 |-- number: long (nullable = true)
 |-- even: integer (nullable = true)
Run Code Online (Sandbox Code Playgroud)

第二个数据帧输出

结果

我的表名为my_delta_table505 行,其中 500 行是奇数,5 行是偶数:

决赛桌结果

  • @BlueClouds 我做了一切,却忘了直接回答。是的,它会删除。 (2认同)