是否将所有嵌套的列都读取到ORC文件中?

时间:2019-01-01 19:19:10

标签: hadoop hive bigdata hiveql orc

说我有一个类似的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仅加载查询所需的列。那么它实际上会做什么?

1 个答案:

答案 0 :(得分:2)

您的理解是正确的。它将读取select查询中指定的唯一列。
如果选择查询为:

Select course.class_name from student

它将仅返回class_name。
如果要查询结构的所有列,则可以使用以下命令。

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