尝试了几个小时,用spark笔记本删除了delta lake表中列分区值为__HIVE_DEFAULT_PARTITION__
的记录。我想出来了,会把答案贴出来的。对于这个记录,我的分区列命名为Period。当分区列的值为NULL时,就会发生这种情况。
确保运行此操作时没有其他笔记本正在更新delta lake表。我的表中的分区列名为Period。sourceFile是一个变量,包含要生效的存储帐户容器和文件夹的位置。
from pyspark.sql.functions import *
from pyspark.sql.types import *
spark.conf.set("spark.databricks.delta.retentionDurationCheck.enabled",False)
from delta.tables import *
from pyspark.sql.functions import *
deltaTable = DeltaTable.forPath(spark, sourceFile)
deltaTable.delete("Period is NULL")
deltaTable.vacuum(0)