如何用Spark Notebook删除Delta Lake表中__HIVE_DEFAULT_PARTITION__分区?
删除Delta Lake表中__HIVE_DEFAULT_PARTITION__分区的记录
当Delta Lake表的分区列存在NULL值时,会自动生成__HIVE_DEFAULT_PARTITION__分区,要清理该分区下的记录,可采用以下两种有效方法:
方法一:匹配NULL值直接删除
这是最直接的方式,因为__HIVE_DEFAULT_PARTITION__本质就是存储分区列NULL值的分区,直接通过IS NULL条件定位:-- Spark SQL 执行 DELETE FROM your_table_name WHERE Period IS NULL;对应Scala/Python代码:
// Scala spark.sql("DELETE FROM your_table_name WHERE Period IS NULL")# Python spark.sql("DELETE FROM your_table_name WHERE Period IS NULL")Delta Lake会自动处理分区的元数据更新和数据清理,无需额外操作。
方法二:直接指定分区名称删除
若遇到元数据映射问题导致IS NULL条件不生效,可直接指定分区名称__HIVE_DEFAULT_PARTITION__作为删除条件:DELETE FROM your_table_name WHERE Period = '__HIVE_DEFAULT_PARTITION__';也可以通过DeltaTable API执行:
import io.delta.tables._ val deltaTable = DeltaTable.forPath(spark, "/path/to/your/delta/table") deltaTable.delete("Period = '__HIVE_DEFAULT_PARTITION__'")
内容的提问来源于stack exchange,提问作者bmukes
相关产品推荐
相关产品推荐

