Hive读取正常,不会报错,Spark读取数据就会出现报错信息:
org.apache.hadoop.mapred.InvalidInputException: Input path does not exist:
hdfs://testcluster/user/hive/warehouse/....
然后我们去查看一下 表数据的具体在hdfs上的存储路径,去hdfs上查看,发现文件确实不存在!
问题解决
在清理历史数据的时候 手动删除数据了 但是没有删除数据分区信息。导致spark找不到。
在hive中执行 show partitions test,查看test表对应的所有分区。
Spark加载hive分区表数据会根据show partitions中的分区去加载,发现目录缺失就会出错了。
只需要删除分区就可以了alter table TableName drop partition (p=‘xxx’)