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