在hive中排查数据错位、脏数据时,需要知道数据的具体文件,可以通过虚拟列来帮助诊断定位。
* INPUT__FILE__NAME
map任务读入的文件全路径
* BLOCK__OFFSET__INSIDE__FILE
如果是RCFile或者是SequenceFile块压缩格式文件则显示Block file Offset,也就是当前快在文件的第一个字偏移量,如果是TextFile,显示当前行的第一个字节在文件中的偏移量
* ROW__OFFSET__INSIDE__BLOCK
RCFile和SequenceFile显示row number, textfile显示为0
譬如有表a,我们需要找到异常数据的具体位置,代码如下:
select *,INPUT__FILE__NAME,BLOCK__OFFSET__INSIDE__FILE from a where ds=2019052901 and imei1='460017684629873'
得到如下结果:
拿到文件路径下载下来,就可以定位到具体的问题原因了
© 著作权归作者所有
文章评论(0)