删除hive的分区元数据,spark总是读取到已经删掉的分区

  1. org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: hdfs://testcluster/user/hive/warehouse/....



问题分析

在hive中执行show partitions test,查看test表对应的所有分区。

看了下之前添加过的所有分区,发现有个分区对应的hdfs目录不存在了(被人为删除了,一般是清理历史数据)。但是这个分区并没有执行alter table test drop partition p=xxx这样删除掉,因为即便是不删除hive也能正常读取。

但是到Spark这就不行了,Spark加载hive分区表数据会根据show partitions中的分区去加载,发现目录缺失就会出错了。

解决方式 1 ,shell 命令删除报错分区

删除分区目录时,同时执行alter table test drop partition (p='xxx')把对应的分区也删除掉就可以了。

如果已经删除了分区目录,也需要执行上以上的命令。

解决方式 2,hue  页面操作删除报错分区

删除hive的分区元数据,spark总是读取到已经删掉的分区_第1张图片

删除hive的分区元数据,spark总是读取到已经删掉的分区_第2张图片

删除hive的分区元数据,spark总是读取到已经删掉的分区_第3张图片

删除hive的分区元数据,spark总是读取到已经删掉的分区_第4张图片 删除hive的分区元数据,spark总是读取到已经删掉的分区_第5张图片 删除hive的分区元数据,spark总是读取到已经删掉的分区_第6张图片

你可能感兴趣的:(大数据)