非分区表
复制表结构
create table new_table like exists_table;
复制表结构和数据
create table new_table as select * from exists_table;
分区表
复制表结构
create table new_table like exists_table;
复制数据稍微麻烦点,使用hdfs拷贝文件,然后再修复表数据。
首先,hadoop fs - cp 命令将exists_table旧表的数据拷贝到new_table新表
hadoop fs -cp /user/warehouse/test.db/exists_table/* /user/warehouse/test.db/new_table/
然后执行MSCK REPAIR TABLE new_table命令让两张表的分区元数据保持一致
注意
MSCK REPAIR TABLE命令主要是用来解决通过hdfs dfs -put或者hdfs api写入hive分区表的数据在hive中无法被查询到的问题。
hive的metastore存储元数据信息。如果不是通过hive的insert等插入语句,很多分区信息在metastore中是没有的,当然可以通过ALTER TABLE table_name ADD PARTITION的方式添加

本文介绍了如何复制Hive中的非分区表和分区表结构及数据。对于分区表,需先通过HDFS命令复制数据,再执行MSCK REPAIR TABLE更新元数据。此外,MSCK REPAIR TABLE用于解决直接写入HDFS的数据在Hive中无法查询的问题,确保元数据与实际文件同步。但需要注意,删除HDFS上的分区文件后,Hive元数据不会自动更新,需要手动清理。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



