报错FAILED: SemanticException [Error 10146]: Cannot truncate non-managed table score1.Error: Error wh

CREATE EXTERNAL TABLE IF NOT EXISTS learn3.score1(
id STRING COMMENT "学生ID",
subject_id STRING COMMENT "科目ID",
score int COMMENT "成绩"
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ","

创建表后想要清空表中原有数据

使用命令

TRUNCATE TABLE  数据库名.表名;

出现以下报错:

0: jdbc:hive2://master:10000> truncate table score1
. . . . . . . . . . . . . . > ;
FAILED: SemanticException [Error 10146]: Cannot truncate non-managed table score1.
Error: Error while compiling statement: FAILED: SemanticException [Error 10146]: Cannot truncate non-managed table score1. (state=42000,code=10146)

原因是:Hive不能清空外部表(外部表不被hive管理,hive只维护到外部表的引用关系)
因此,执行truncate操作,只能对内部表进行。

解决方法

查看外部表存储位置
SHOW CRAETE TABLE table_name
找到完整建表语句中LOCATION对应的字符串及为该外部表存储的位置。

删除外部表
直接删除hdfs表对应的目录
hadoop fs -rm -r /user/hive/warehouse/database_name.db/table_name
删除元数据
drop table table_name

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值