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)
此选项的工作方式几乎类似于动态覆盖分区,基本上您是在告诉 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 行是偶数:
| 归档时间: |
|
| 查看次数: |
2663 次 |
| 最近记录: |