赞
踩
最近在对公司集群的数据进行进一步的整理和归类,在进行数据整合的时候发现Spark读取hive分区表的时候出现了一点问题,会出现org.apache.hadoop.mapred.InvalidInputException: Input path does not exist
使用Hue查询hive数据
考虑难道Zeppelin上面读取hive分区是有问题的?难不成hive库谁动了?根据这个错误提示去找问题,既然这个数据不存在那就找找相对应库里面所有的分区表吧,那么既然不存在为何查看tables的时候却有233个分区,是因为数据丢失或删除的时候没有做 alter table table_name drop partition (d>='XXXX')
既然问题知道什么原因,那就动手吧,两个思路:第一,Spark读取Hive数据的时候添加分区条件进行读取的过滤,第二,那这个不存在的分区全部删除。由于分区时间是连续的我采用 alter table table_name drop partition (d>='2020-02-15',d<='2020-07-20')的方式删除不存在的分区。
再次使用Spark去读取hive数据
但是还是有个问题就是在Hue中查看Tables里面的分区的时候这些分区还在,更新元数据以后还是没有用,那剩下的只能手动删除了!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。