hive:Cannot truncate non-managed table table_name

目录

一、背景

二、分析原因

三、解决方法

1.将外部表转为内部表

2.暴力删除外部表文件路径

3.暴力删表

[4.insert overwrite覆盖](#4.insert overwrite覆盖)

5.hive4.0后版本


一、背景

在hue执行"truncate table db_name.table_name"时报错,报错内容为"Error while compiling statement: FAILED: SemanticException [Error 10146]: Cannot truncate non-managed table db_name.table_name"

二、分析原因

该表为外部表。(non-managed tables)

外部表:hive只管理元数据,hdfs管理实际数据文件,删除表的时候只删除了元数据数据文件还在;

内部表:hive管理元数据和数据文件,删除表时都会同时删除。

三、解决方法

1.将外部表转为内部表

sql 复制代码
--将外部表转为内部表
ALTER TABLE db_name.table_name SET TBLPROPERTIES('EXTERNAL'='false');
--清空表数据
truncate table db_name.table_name;
--将内部表转为外部表
ALTER TABLE db_name.table_name SET TBLPROPERTIES('EXTERNAL'='true');

2.暴力删除外部表文件路径

show create table db_name.table_name 找到文件路径

hdfs dfs -rm -f 路径/*

3.暴力删表

sql 复制代码
drop table db_name.table_name purge;

4.insert overwrite覆盖

sql 复制代码
insert overwrite table db_name.table_name
select *
from db_name.table_name
where 1=0;

5.hive4.0后版本

sql 复制代码
--官网:Starting Hive 4.0.0 ( HIVE-19981 - Managed tables converted to external tables by the HiveStrictManagedMigration utility should be set to delete data when the table is dropped RESOLVED  ) setting table property external.table.purge=true, will also delete the data.


ALTER TABLE db_name.table_name SET TBLPROPERTIES ('external.table.purge'='true');
相关推荐
五月天的尾巴5 小时前
hive数据库模糊查询表名
hive·查询表名
蓝魔Y5 小时前
hive—1.1、执行优化
hive
快乐非自愿6 小时前
OpenClaw 生态适配:Hadoop/Hive 技能现状与企业级集成方案
大数据·hive·hadoop·分布式·openclaw
盛源_011 天前
hive表视图
数据仓库·hive·hadoop
SelectDB技术团队1 天前
Apache Doris + SelectDB:定义 AI 时代,实时分析的三大范式
数据库·数据仓库·人工智能·云原生·实时分析
xiaogai_gai1 天前
ETL数据流程实战:轻易云平台整合金蝶云星空API接口
java·数据仓库·etl
SelectDB技术团队1 天前
OLAP 无需事务?Apache Doris 如何让实时分析兼具事务保障
数据库·数据仓库·人工智能·云原生·实时分析
success1121 天前
hadoop集群准备工作
大数据·hadoop·chrome
Francek Chen1 天前
【大数据存储与管理】分布式数据库HBase:04 HBase的实现原理
大数据·数据库·hadoop·分布式·hbase
yumgpkpm1 天前
OpenClaw(养龙虾) +关于Hadoop hive的Skills(CLoudera CDH、CDP)
大数据·数据仓库·hive·hadoop·分布式·zookeeper·kafka