非分区表复制
复制一张非分区表,使用CREATE TABLE IF NOT EXISTS AS SELECT * FROM tb_name;
只复制表结构,CREATE TABLE IF NOT EXISTS AS SELECT *** FROM tb_name WHERE 1=2;
PS:
分区表如果采用这种"CREATE TABLE IF NOT EXISTS AS"的方法复制,表结构将发生改变(会变为非分区表)
分区表复制
动态分区
MSCK修复分区
step1:
CREATE TABLE IF NOT EXISTS cm_ods_mask.order_log_tmp LIKE cm_ods_safe.order_log
step2:
hdfs dfs -cp /user/hive/warehouse/cm_ods_safe.db/order_log/* /user/hive/warehouse/cm_ods_mask.db/order_log_tmp/
step3:
MSCK REPAIR TABLE order_log_tmp
step4:
ALTER TABLE order_log_tmp RENAME TO order_log
PS:
1)在linux执行
2)使用 MSCK方法同样可以快速复制分区表,比动态分区要快的原因是使用 hdfs 的文件复制,而不是启动 mapreduce 作业
说明:此文章主要针对误删除表操作。其它库中有被删除的表的备份,使用该备份进行MSCK修复分区方式操作