Hive 修复hdfs中的分区数据

Hive 修复hdfs中的分区数据,hive,Hive,每小时数据以tsv文件的形式添加到hdfs分区-(日期,小时)。外部表“logs”的hdfs位置为“hive/log\u data”。 划分为多个分区,例如-“配置单元/日志数据/utc\u日期=2016-08-31/utc\u小时=15” 然后运行命令 hive -e "ALTER TABLE logs ADD IF NOT EXISTS PARTITION (utc_date='${DATE}', utc_hour='${HOUR}')" 对于该特定分区,在配置单元元存储中创建的分区—就像

每小时数据以tsv文件的形式添加到hdfs分区-(日期,小时)。外部表“logs”的hdfs位置为“hive/log\u data”。 划分为多个分区,例如-“配置单元/日志数据/utc\u日期=2016-08-31/utc\u小时=15”

然后运行命令

hive -e "ALTER TABLE logs ADD IF NOT EXISTS PARTITION (utc_date='${DATE}', utc_hour='${HOUR}')"
对于该特定分区,在配置单元元存储中创建的分区—就像msck修复表日志一样。 然后运行一个脚本来压缩文件,这样就不会有太多的小文件

SET hive.exec.compress.output=true;
insert overwrite into table PARTITION( utc_date = '${hiveconf:DATE}',
utc_hour = '${hiveconf:HOUR}' 
select * from logs
where utc_date = '${hiveconf:DATE}'
and utc_hour = '${hiveconf:HOUR}'
在一个例子中,ALTERTABLEADDPARTITION命令在一天中的所有时间都没有执行。当这个压缩脚本在分区上运行时,问题就发生了,分区的信息在配置单元元存储中不存在

现在,对于logs表,任何查询该表的日期的查询都非常慢,并且创建的映射程序比其他日期多1000倍

如何修复分区。现在运行ALTER或msck命令没有帮助,即使它成功完成