Hive更改表名FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Una ble
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Una
ble to alter table. Unable to access old location hdfs://mycluster/user/sjk/xx for table db1.xx
【注】
注意:重命名不能简单的 ALETR TABLE table_a CHANGE NAME TO table_b,因为在Hive中,数据存储在hdfs中,必须对存储的数据文件做修改
RENAME TABLE
ALTER TABLE table_name RENAME TO new_table_name
这个命令可以让用户为表更名。数据所在的位置和分区名并不改变。换而言之,老的表名并未“释放”,对老表的更改会改变新表的数据?
不,数据所在的位置会移动到hive表默认路径下。如果建表是指定路径LOCATION,那么重名之后,路径会变更。
例子:创建表,插入数据
在hdfs上查看到数据:
改名:报错。
大致意思:
失败:执行错误,从org.apache.hadoop.hive.ql. execl . ddltask返回代码1。不能
更改表格。无法为表db1.ss访问旧位置hdfs://mycluster/user/sjk/ss
所以:根据上边错误提示中的路径,删除它。
再次改名:
但是,数据由于我们删除了,所以也会丢失,
并且找不到表的位置:
总之,不晓得机制是怎么回事?不过在default默认的数据库中,改名是直接可以完成的。