FAQ-离线开发建hive外表报错hdfs目录非空
    更新时间: 2025-10-31 20:50:03
    
    阅读 11
    
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目录非空
作者:曹俊
文档反馈
                    
                    
                    
                    
                 扫码
 扫码 复制
 复制 导出
 导出 
                         
                     
     
     
    
以上内容对您是否有帮助?