【发布时间】:2021-02-10 15:16:11
【问题描述】:
我正在尝试将表的位置移动到新目录。假设原始位置是/data/dir。例如,我正在尝试这样的事情:
hadoop fs -mkdir /data/dir_bkp
hadoop fs -mv /data/dir/* /data/dir_bkp
然后我执行 hive 命令,例如:
ALTER TABLE db.mytable RENAME TO db.mytable_bkp;
ALTER TABLE db.mytable_bkp SET LOCATION /data/dir_bkp;
在更改表的位置之前移动目录文件可以吗?运行这些命令后,mytable_bkp 表是否会像以前一样填充?
【问题讨论】:
-
已分区。所以我只需要在最后添加
MSCK REPAIR TABLE db.mytable_bkp,即使先移动文件,备份表仍然会被填充? -
谢谢。那是位置是一个错字。但是,如果在位置包含数据的情况下加载了表,那么如果我首先移动文件,表会不会是空的?因为在我移动表格的位置之前,该位置没有数据。
-
@leftjoin 感谢您的帮助。我执行了上述命令,可以看到我的数据从
dir移动到dir_bkp,但是即使在运行msck repair table db.mytable_bkp之后,表格也是空的。 -
检查 SHOW PARTITIONS - 分区是否安装到旧位置?
-
表是外部的还是托管的?如果它是外部的,您可以尝试删除并创建并再次运行 MSCK 我猜这可能是安装到旧位置的分区的问题。如果表是 MANAGED - 在删除之前将其置于外部
标签: hadoop hive hdfs hive-partitions hiveddl