Может ли улей метастор виртуально разделить данные на основе значения столбца без физического изменения структуры каталогов?

В качестве примера рассмотрим, что у меня есть данные обо всех произошедших крупных спортивных событиях. Схема приведена ниже.

Имя события, Дата, Месяц, Год, Город

Это данные, которые физически структурированы в HDFS по году, дате, месяцу.

Теперь я хочу создать виртуальные разделы на основе другого значения столбца, например. Город. Данные будут физически храниться в HDFS только в структуре года, даты и месяца, но мои метаданные отслеживают виртуальный раздел.

Может ли Hive Metastore сделать это за меня?


person anmolp95    schedule 18.04.2018    source источник


Ответы (1)


Я так не думаю. Фактически разделение в Hive означает создание разных директорий для разных разделов. А хранилище метаданных содержит только метаданные таблицы. Он не будет контролировать фактические данные. Технически, когда мы когда-либо запрашиваем на основе этого секционированного столбца в таблице Hive, запрос будет выполняться только в этом точном секционированном каталоге. Таким образом, виртуальное разбиение без изменения структуры hdfs в том смысле, что реальные данные будут находиться в одном каталоге, поэтому запрос должен выполняться для всех данных. Так что технически оптимизации вообще не происходит.

person Suresh Kumar    schedule 18.04.2018
comment
Я согласен с вашей точкой зрения, но возможно ли, что у нас есть метаданные для всех файлов, связанных с каждым разделом. Поэтому, когда мы запрашиваем виртуальный раздел, хранилище метаданных просто предоставит список файлов для обработки, следовательно, нам не нужно искать всю структуру самостоятельно, метахранилище сохранит его предварительно вычисленным для нас. - person anmolp95; 18.04.2018
comment
По-вашему, если мы создадим виртуальные разделы для каждого n каждого каталога разделов, метаданные увеличатся, поэтому нагрузка на Namenode увеличится, что вызовет проблемы с производительностью. N бизнес-требований могут время от времени меняться, поэтому мы не можем создавать разные метаданные для разных требований в одном и том же наборе данных. Это очень дорого. При обычном разбиении то же самое произойдет, если вы запросите столбец раздела. В метаданных указано, по какому столбцу произошло разбиение, поэтому запрос будет выполняться только для соответствующего списка файлов в этом разделе. - person Suresh Kumar; 19.04.2018