Java玩转大数据

Hive ORC文件损坏问题

2023-08-20  本文已影响0人  AlienPaul

背景

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

上一篇 下一篇

猜你喜欢

热点阅读