直接将hdfs 加到hive表分区 通过msck

/home/user_image/hadoop-2.7.2/bin/hadoop fs -mkdir hdfs://cluster/user/hive/warehouse/dm_userimage.db/f_userimage_messageinfo/etl_date=$yesterday

/home/user_image/hadoop-2.7.2/bin/hadoop fs -cp /NS2/dm_research/f_hyd_message_modify_mix_final/*  hdfs://cluster/user/hive/warehouse/dm_userimage.db/f_userimage_messageinfo/etl_date=$yesterday

/home/user_image/hive-2.0.0/bin/hive<<EOF

set mapreduce.job.queuename=root.big_slow;
msck repair table dm_userimage.f_userimage_messageinfo;

EOF
exit

对于 Hive 分区,如果你在结构中新增了一个字段,那么对于已经存在的历史分区,这个新字段是不会被自动识别的。这是因为 Hive 在创建分区时,会将分区信息存储在 metadata 中,而这些 metadata 是不会随着结构的变化而自动更新的。 如果你想要查询或者更新历史分区数据时能够识别到这个新字段,需要手动更新 metadata。具体来说,可以通过以下两种方式实现: 1. 使用 `MSCK REPAIR TABLE` 命令,该命令可以检查分区目录,将分区信息更新到 metadata 中。执行该命令时,Hive 会扫描对应的 HDFS 目录,并将其中的所有分区信息添加到 metadata 中。 例如,如果你的分区定义如下: ``` CREATE TABLE example ( id INT, name STRING ) PARTITIONED BY (dt STRING, country STRING); ``` 然后你新增了一个字段 `age INT`,那么你可以使用以下命令更新 metadata: ``` MSCK REPAIR TABLE example; ``` 2. 手动添加分区信息到 metadata 中。如果你只需要更新某个特定分区的 metadata,可以使用以下命令手动添加分区信息到 metadata 中: ``` ALTER TABLE example ADD PARTITION (dt='20211010', country='CN') LOCATION '/path/to/partition'; ``` 执行该命令后,分区目录会被添加到 metadata 中,然后你就可以使用新字段查询和更新该分区数据了。 总之,无论是使用 `MSCK REPAIR TABLE` 还是手动添加分区信息,都需要注意及时更新 metadata,以便能够正常查询和更新历史分区数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值