简述Hive中的虚拟列作用是什么,使用它的注意事项

发布于 2020-01-10 22:27:11
关注者
0
被浏览
1245
1 个回答
  • 面试哥
    面试哥 2020-01-10
    为面试而生,有面试问题,就找面试哥。

    解答:

    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

知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看