简述Hive中的虚拟列作用是什么,使用它的注意事项
-
解答:
Hive提供了三个虚拟列:
INPUTFILENAME
BLOCKOFFSETINSIDE__FILE
ROWOFFSETINSIDE__BLOCK
但ROWOFFSETINSIDE__BLOCK默认是不可用的,需要设置hive.exec.rowoffset为true才可以。可以用来排查有问题的输入数据。
INPUTFILENAME, mapper任务的输出文件名。
BLOCKOFFSETINSIDE__FILE, 当前全局文件的偏移量。对于块压缩文件,就是当前块的文件偏移量,即当前块的第一个字节在文件中的偏移量。
hive> SELECT INPUTFILENAME, BLOCKOFFSETINSIDE__FILE, line
FROM hive_text WHERE line LIKE '%hive%' LIMIT 2;
har://file/user/hive/warehouse/hive_text/folder=docs/
data.har/user/hive/warehouse/hive_text/folder=docs/README.txt 2243
har://file/user/hive/warehouse/hive_text/folder=docs/
data.har/user/hive/warehouse/hive_text/folder=docs/README.txt 3646