对已删除分区文件的分区表触发 sql 查询失败



下面是我按顺序尝试的,

  1. 根据当前小时在 Hive 中创建分区表。
  2. 使用Spark Hive上下文并执行MSCK修复表。
  3. 手动删除其中一个添加分区的 HDFS 文件夹。
  4. 再次使用 Spark Hive 上下文并执行A> MSCK 修复 这不会删除已添加的没有HDFS文件夹的分区。 似乎是关于"MSCK修复"的已知行为b> 从表XXX中选择*,其中(现有分区); 失败并出现异常:文件未找到指向 hdfs 文件夹的异常 这是手动删除的。

有关此行为的任何见解都将有很大帮助。

是的,MSCK REPAIR TABLE只会发现新分区,而不会删除"旧"分区。

使用删除HDFS文件夹的外部配置单元表,我看到两个解决方案

    删除表
  1. (不会删除文件,因为该表是外部表),然后使用相同的位置重新创建表,然后运行 MSCK REPAIR TABLE 。这是我首选的解决方案。
  2. 删除
  3. 使用ALTER TABLE <table> DROP PARTITION <partition>删除的所有分区

您在案例中观察到的内容可能与以下情况有关:https://issues.apache.org/jira/browse/SPARK-15044 和https://issues.apache.org/jira/browse/SPARK-19187

相关内容

  • 没有找到相关文章

最新更新