【问题标题】:Will all nested columns be read in an ORC file?是否会在 ORC 文件中读取所有嵌套列?
【发布时间】:2019-05-28 14:58:33
【问题描述】:

假设我有这样的 Hive 查询:

CREATE TABLE student (key string, name string, course struct<class_name:string, class_teacher:string>) 
STORED AS ORC;

由于是 ORC 文件格式,这将创建 5 个不同的列:

| key | name | course | course.class_name | course.class_teacher |

当尝试只读取course.class_name 列时,是否每次都会读取course 的两个子列?如,course.class_namecourse.class_teacher ?据我所知,ORC 文件格式允许 Hive 仅加载查询所需的列。那么它实际上会做什么呢?

【问题讨论】:

    标签: hadoop hive bigdata hiveql orc


    【解决方案1】:

    你的理解是对的。它将读取选择查询中指定的唯一列。
    如果选择查询是:

    Select course.class_name from student
    

    它只会返回 class_name。
    如果要查询结构的所有列,可以使用以下。

    select key, name, c.* from students 
       lateral view inline (array(course)) c
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-19
      • 2017-10-17
      • 1970-01-01
      • 2017-08-07
      • 2015-11-25
      • 2017-08-14
      • 1970-01-01
      • 2016-12-28
      相关资源
      最近更新 更多