3.Hive中查看数据来源文件和具体位置方法

虚拟列

-- 当 hive 产生了非预期的或 null 的时候,可以通过虚拟列进行诊断,判断哪行数据出现问题

INPUT__FILE__NAME     (输入文件名)map任务读入File的全路径

BLOCK__OFFSET__INSIDE__FILE     (块内偏移量) 如果是RCFile或者是SequenceFile块压缩格式文件则显示Block file Offset,也就是当前快在文件的第一个字偏移量,如果是TextFile,显示当前行的第一个字节在文件中的偏移量

ROW__OFFSET__INSIDE__BLOCK     ( 行偏移量,需要设置 hive.exec.rowoffset=true; 启用 ) RCFile和SequenceFile显示row number, textfile显示为0

 

如:表 ods.kesheng_sdk_json_ex

hive> select INPUT__FILE__NAME,BLOCK__OFFSET__INSIDE__FILE  from ods.kesheng_sdk_json_ex limit 5;
OK
hdfs://ns1/user/hadoop/ods/kesheng/20160811/00/kesheng.1470913703668.gz 0
hdfs://ns1/user/hadoop/ods/kesheng/20160811/00/kesheng.1470913703668.gz 894
hdfs://ns1/user/hadoop/ods/kesheng/20160811/00/kesheng.1470913703668.gz 1768
hdfs://ns1/user/hadoop/ods/kesheng/20160811/00/kesheng.1470913703668.gz 2627
hdfs://ns1/user/hadoop/ods/kesheng/20160811/00/kesheng.1470913703668.gz 5430
Time taken: 24.381 seconds, Fetched: 5 row(s)

由于我们公司的这个参数没有开启,所以ROW__OFFSET__INSIDE__BLOCK就没有啦

如果碰到有脏数据或者结果异常的时候,可以通过select这三个值来定位出错的原始文件和具体所在位置,很方便。

posted on 2017-02-08 11:26  为尊严而奋斗  阅读(5522)  评论(0编辑  收藏  举报

导航