FAQ-离线开发建hive外表报错hdfs目录非空
更新时间: 2025-10-31 20:50:03
阅读 293
FAQ-离线开发建hive外表报错hdfs目录非空
问题描述/异常栈
在离线开发执行建立hive外表报错,每次执行建表语句均需手动清空hdfs路径:Caused by: org.apache.spark.sql.AnalysisException: CREATE-TABLE-AS-SELECT cannot create table with location to a non-empty directory /user/bigdata_ip_patent_dev/hive_db/bigdata_ip_patent.db/patent_for_algo_ipc .发现版本
所有版本解决方案
1、方案1建表语句执行前,添加下列前置sql:
ALTER TABLE bigdata_ip_patent.patent_for_algo_ipc SET TBLPROPERTIES ('external.table.purge'='true');

但此方案需注意,ALTER TABLE时需保证表一定要存在,否则也会报错(尤其任务调度运行时)
2、方案2
在节点运行设置/其他设置内添加参数:
conf.spark.sql.legacy.allowNonEmptyLocationInCTAS=true
问题原因
删除hive外表默认不会删除hdfs上的数据,因此只能:(需结合业务实际场景选择)1、设置参数指定删除外表时一同删除hdfs数据
2、或者设置参数指定建表时允许hdfs目录非空
作者:曹俊
文档反馈
以上内容对您是否有帮助?