hive 分区表_Spark读取Hive分区表的问题

最近在对公司集群的数据进行进一步的整理和归类,在进行数据整合的时候发现Spark读取hive分区表的时候出现了一点问题,会出现org.apache.hadoop.mapred.InvalidInputException: Input path does not exist

hive 分区表_Spark读取Hive分区表的问题_第1张图片

使用Hue查询hive数据

hive 分区表_Spark读取Hive分区表的问题_第2张图片

考虑难道Zeppelin上面读取hive分区是有问题的?难不成hive库谁动了?根据这个错误提示去找问题,既然这个数据不存在那就找找相对应库里面所有的分区表吧,那么既然不存在为何查看tables的时候却有233个分区,是因为数据丢失或删除的时候没有做 alter table table_name drop partition (d>='XXXX')

hive 分区表_Spark读取Hive分区表的问题_第3张图片

hive 分区表_Spark读取Hive分区表的问题_第4张图片

既然问题知道什么原因,那就动手吧,两个思路:第一,Spark读取Hive数据的时候添加分区条件进行读取的过滤,第二,那这个不存在的分区全部删除。由于分区时间是连续的我采用 alter table table_name drop partition (d>='2020-02-15',d<='2020-07-20')的方式删除不存在的分区。

再次使用Spark去读取hive数据

hive 分区表_Spark读取Hive分区表的问题_第5张图片

但是还是有个问题就是在Hue中查看Tables里面的分区的时候这些分区还在,更新元数据以后还是没有用,那剩下的只能手动删除了ee0bbc7a63f2a4130ca014bc36e5b744.png

你可能感兴趣的:(hive,分区表,hive,删除分区,hive分区,hive删除分区数据)