美文网首页Java玩转大数据
Hive ORC文件损坏问题

Hive ORC文件损坏问题

作者: AlienPaul | 来源:发表于2023-08-20 18:16 被阅读0次

    背景

    Hive表由于负载过高或者异常退出等原因,导致表中的orc文件损坏,影响表正常读取。此博客记录了Hive表异常orc文件的定位和故障排除步骤。

    检查分区是否存在损坏的orc文件

    使用select count(1)语句逐个测试partition目录中是否存在损坏的orc表。但Hive默认在count时使用统计信息不读取orc文件。因此需要先配置Hive不使用统计信息。

    配置Hive查询不使用统计信息的方法为:

    set hive.compute.query.using.stats=false;
    

    配置完毕后执行:

    select count(1) from table_name where partition_col='xxx';
    

    逐个测试有潜在问题的分区。如果出现报错,说明该分区下可能有损坏的orc文件。

    检查具体哪个orc文件损坏

    找到疑似存在损坏orc文件的分区目录之后,执行如下命令查看orc文件数据内容:

    hive --orcfiledump -d hdfs:///...
    

    -d参数允许传入目录名。可以检测目录下的所有orc文件。如果出现报错,说明该orc文件存在问题。报错中会给出存在问题的orc文件路径。

    也可以使用:

    hive --orcfiledump hdfs:///...
    

    查看orc文件统计信息,stripe信息等。

    修复损坏的orc文件

    找到损坏的orc文件后,执行:

    hive --service orcfiledump --recover hdfs:///...
    

    尝试修复该orc文件。

    如果orc文件无法修复,可将该orc文件移动到其他目录备份。这种修复方式会丢失一部分数据。

    修复或者清理分区中所有损坏的orc文件之后,分区的查询操作可恢复正常。

    参考材料

    https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC

    相关文章

      网友评论

        本文标题:Hive ORC文件损坏问题

        本文链接:https://www.haomeiwen.com/subject/qpasmdtx.html