使用hive查看orc文件 orcfiledump命令详解 异常处理(Failed to read ORC file)

4 篇文章 0 订阅
4 篇文章 0 订阅

列式存储以orc和parquet文件居多,现阶段hive数据存储的主流格式是orc,然后结合presto(目前对orc的支持好于parquet)做一些即席查询。hive数据文件是直接存储在hdfs上,但是hadoop貌似没有提供直接查看文本的命令,好在hive提供了支持。


一、ORC文件查看

1. 命令帮助: hive --service orcfiledump --help

$ hive --service orcfiledump --help
usage ./hive orcfiledump [-h] [-j] [-p] [-t] [-d] [-r <col_ids>] [--recover] [--skip-dump] [--backup-path <new-path>] <path_to_orc_file_or_directory>

  --json (-j)                 Print metadata in JSON format
  --pretty (-p)               Pretty print json metadata output
  --timezone (-t)             Print writer's time zone
  --data (-d)                 Should the data be printed
  --rowindex (-r) <col_ids> Comma separated list of column ids for which row index should be printed
  --recover                   Recover corrupted orc files generated by streaming
  --skip-dump                 Used along with --recover to directly recover files without dumping
  --backup-path <new_path>  Specify a backup path to store the corrupted files (default: /tmp)
  --help (-h)                 Print help message
# (-[a-z])里的内容为缩写,与前面的--xx等价,使用起来更加方便
# --json --pretty都用于metadata信息的展示,后者对输出的json进行了格式化
# --data 可用于数据预览

2. 数据预览演示

hive --service orcfiledump -d /warehouse/tablespace/managed/hive/ads.db/xxx/dw=2021-07-05 | tail

数据预览
① 建议挑选较小的文件进行测试
②文件实在很大建议使用tail,使用head在输出指定的行数后会报一堆的异常信息
head异常信息

二、ORC文件修复

今天使用presto查hive数据的时候报了如下异常
Query 20230313_083619_19104_9jvmr failed: Failed to read ORC file: hdfs://DATALAKE/warehouse/tablespace/managed/hive/dim.db/xxx/dw=2023-03-06/000065_0

但是从hdfs上看文件是存在的,也有大小,然后尝试了下修复命令

hive --service orcfiledump  --recover /warehouse/tablespace/managed/hive/dim.db/xxx/dw=2023-03-06/000065_0

修复成功
修复成功

(建议先备份文件)
暂未发现异常,大家如有遇到orc fail这种情况可以尝试下

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值