Будут ли все вложенные столбцы прочитаны в файле ORC? - PullRequest
0 голосов
/ 01 января 2019

Скажем, у меня есть запрос 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_name и course.class_teacher?Насколько мне известно, формат файла ORC позволяет Hive загружать только столбцы, необходимые для запроса.Так что же он будет делать на самом деле?

1 Ответ

0 голосов
/ 02 января 2019

Ваше понимание верно.Будет прочитан единственный столбец, указанный в запросе на выборку.
Если запрос на выборку:

Select course.class_name from student

Будет возвращено только имя_класса.
В случае, если вы хотите запросить все столбцыдля структуры вы можете использовать следующее.

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