Hive-复制表

非分区表复制

复制一张非分区表,使用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"的方法复制,表结构将发生改变(会变为非分区表)

分区表复制

动态分区

CREATE TABLE IF NOT EXISTS cm_distribution_shop.dp_shop_user
shop_sub_id int,  
openid string,  
user_id int
PARTITIONED BY (yymmdd string);
INSERT OVERWRITE TABLE cm_distribution_shop.dp_shop_user PARTITION (yymmdd) SELECT * FROM sorce_table;
执行后可以得到和之前一样的分区表,但是这并不是最快的方法 
PS:使用OVERWRITE,不是INTO

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修复分区方式操作

转载于:https://www.cnblogs.com/chwilliam85/p/9768161.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值