разделы в вопросах интервью улья - PullRequest
3 голосов
/ 11 апреля 2019

1) Если в столбце с разделами нет данных, поэтому при запросе какой ошибки вы будете получать?

2) Если в некоторых строках столбец с разделами отсутствует, то как онистроки будут обработаны?будет ли потеря данных?

3) Почему необходимо выполнять группирование с числовым столбцом?Можем ли мы использовать строковый столбец также?в чем заключается процесс и на каком основании вы выберете столбец распределения?

4) Будут ли данные внутренней таблицы также храниться в метастазах?Или будут храниться только внешние данные таблицы?

5) Какие типы запросов выполняются только на стороне преобразователя, а не в редукторе и наоборот?

1 Ответ

6 голосов
/ 11 апреля 2019

Короткие ответы:

1. , если в секционированном столбце нет данных, поэтому при запросе этого , какую ошибку вы получите?

Разделенный столбец в Hive - это папка с именем key=value с файлами данных внутри.И если у него нет данных, это означает, что папок разделов не существует, и таблица пуста, ошибки не отображаются, данные не возвращаются.При вставке пустого значения в столбец с разделением с использованием динамического разделения все значения NULL в столбце разделения (и все значения, которые не соответствуют типу поля), загруженные как __HIVE_DEFAULT_PARTITION__ Если в этом случае тип столбца является числовым, то ошибка приведения типа будетбыть брошенным во время выбора.Нечто подобное не может привести textWritable к IntWritable, например

2. , если в некоторых строках нет разделенного столбца, как эти строки будут обрабатываться?будет ли потеря данных?

Если «не имеет» означает NULL, то загружается как HIVE_DEFAULT_PARTITION На самом деле все еще возможно получить данные, без потерь

3. Почему группировка должна выполняться с числовым столбцом? - не обязательно должен быть числовым мы можем также использовать строковый столбец? Да. каков процесс и на каком основании вы выберете колонку с разбивкой.?

Столбцы для группирования следует выбирать на основе столбцов соединений / фильтров.Значения хешируются, распределяются и сортируются (кластеризуются), и одни и те же хеши записываются (во время перезаписи вставки) в одни и те же сегменты (файлы).Количество ведер и столбцов указано в таблице DDL.

Bucketed table и bucket-map-join - немного устаревшая концепция, вы можете добиться того же, используя DISTRIBUTE BY + sort + ORC.Этот подход более гибкий.

4. Будут ли данные внутренней таблицы также храниться в метастазах?или будут храниться только внешние данные таблицы?

Не имеет значения, внешний или управляемый.Схема таблицы / гранты / статистика хранятся в метастазах.

5. Какие типы запросов выполняются только на стороне преобразователя, а не в редукторе и наоборот?

Запросы без агрегаций, объединений карт (когда небольшая таблица помещается в памяти), простые преобразования столбцов (простые пользовательские функции столбцов, такие как regexp_replace, split, substr, trim, concat и т. Д.), Фильтры в WHERE, сортировка по -может быть выполнен на картографе.

Агрегации и аналитика, общие объединения, упорядочение по, распределение по, UDAF выполняются на mapper + редуктор.

...