apache配置单元创建表

ogq8wdun  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(369)

我很难理解这个apache配置单元代码背后的真正含义,有人能向我解释一下这个代码是否真的在做什么吗?

ALTER TABLE a RENAME TO a_tmp;
DROP TABLE a;
CREATE TABLE a AS SELECT * FROM a_tmp;
3lxsmp7m

3lxsmp7m1#

ALTER TABLE a RENAME TO a_tmp;

这只允许您重命名表 aa_tmp .
假设你的table a 最初指向 /user/hive/warehouse/a ,则执行此命令后,数据将移动到 /user/hive/warehouse/a_tmp 以及 /user/hive/warehouse/a 将不复存在。请注意,这种移动hdfs目录的行为只存在于较新版本的配置单元中。在那之前 RENAME 命令只是更新元存储,而不是移动hdfs中的目录。
同样,如果你 show tables 以后,你会看到的 a 已经不存在了,但是 a_tmp 存在。您不能再查询 a 因为它不再在元存储中注册。

DROP TABLE a;

这基本上什么都不做,因为您已经重命名了 aa_tmp . 所以呢 a 在元存储中不再存在。这仍然会打印“确定”,因为没有什么可做的。

CREATE TABLE a AS SELECT * FROM a_tmp;

您要求创建一个名为 a 并在元存储中注册它。您还要求用中的相同数据填充它 a_tmp (您已经从中复制了 a 之前)
简言之,您将初始表移动到一个新表,然后将新表复制回原始表,因此这些查询所做的唯一事情就是将初始数据复制到这两个表中 a 以及 a_tmp .

相关问题