sparksql查询已删除分区文件的分区表失败

oiopk7p5  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(563)

下面是我尝试的顺序,
基于当前小时在配置单元中创建分区表。
使用spark配置单元上下文并执行msck修复表。
手动删除其中一个已添加分区的hdfs文件夹。
再次使用spark hive context并执行>msck修复这不会删除已经添加的没有hdfs文件夹的分区。似乎是关于“msck repair”b>select*from table where(现有分区)的已知行为;失败并出现异常:filenotfound异常指向手动删除的hdfs文件夹。
任何关于这种行为的见解都会大有帮助。

n9vozmp4

n9vozmp41#

对, MSCK REPAIR TABLE 只会发现新分区,而不会删除“旧”分区。
使用删除hdfs文件夹的外部配置单元表时,我看到两种解决方案
删除表(由于表是外部的,所以不会删除文件),然后使用相同的位置重新创建表,然后运行 MSCK REPAIR TABLE . 这是我喜欢的解决方案。
删除使用删除的所有分区 ALTER TABLE <table> DROP PARTITION <partition> 你观察到的情况可能与以下几点有关:https://issues.apache.org/jira/browse/spark-15044 以及https://issues.apache.org/jira/browse/spark-19187

相关问题