玩过Oracle的同学一定知道rowid=objectid+file#+block#+row#这个概念,其实在Hive里也有“Rowid.

Hive里有虚拟列的概念,类似于Oracle里的伪列,其中三个虚拟列是:INPUT__FILE__NAMEBLOCK__OFFSET__INSIDE__FILEROW__OFFSET__INSIDE__BLOCK.

INPUT__FILE__NAME:MAPREDUCE读取的文件的URI

BLOCK__OFFSET__INSIDE__FILEFor blockCompressed files,表示RCFile Block orSequenceFile 当前块在文件中的偏移量;For non-block-compressedfiles, 表示当前行的偏移量.

ROW__OFFSET__INSIDE__BLOCK:当打开参数hive.exec.rowoffset(默认关闭)时会开启这个虚拟列特性,For non-block-compressed files这个值一直为0,否则表示行号.