Hive - будет работать столбчатое сканирование на CSV External Table - PullRequest
1 голос
/ 16 апреля 2019

Как правило, если мы создадим таблицу Hive с паркетом или ORC, то она будет сканировать конкретный столбец, который мы упомянули в запросе выбора.

Но скажем, у меня есть 10 файлов CSV и создан внешнийстол сверхуТеперь, если я сделаю select col1, col2, col3 from external_table;, будет ли он сканировать все мои строки, а редуктор выберет только выбранные столбцы или как это будет работать?

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

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

Редуктор получает промежуточные строки от картографа и выполняет окончательную обработку: агрегирование, упорядочение и т. Д.

Длинный ответ:

Улей на MR и Hive onTez использует MapReduce framework примитивы для построения всего процесса обработки.

CSV-файл разделяется, а MapReduce framework порождает одну задачу карты для каждого InputSplit, сгенерированного InputFormat.

Карты преобразуют входные записи в промежуточные записи.Преобразованные промежуточные записи не обязательно должны быть того же типа, что и входные записи.Только необходимые столбцы включены в выданные записи.Заданная входная пара может отображаться на ноль или на множество выходных пар, mapper выполняет начальную фильтрацию и агрегацию.

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

Промежуточные, отсортированные выходы всегдахранится в простом (key-len, key, value-len, value) формате.Приложения могут контролировать, должны ли и как сжиматься промежуточные выходы.

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

Редуктор имеет 3 основных этапа: перемешать, отсортировать и уменьшить.Shuffle

Вход в редуктор - это отсортированный вывод картографов.На этом этапе фреймворк выбирает соответствующий раздел вывода всех преобразователей через HTTP.Сортировка

Каркас группирует входы редуктора по ключам (поскольку разные преобразователи могут выводить один и тот же ключ) на этом этапе.

Фазы перемешивания и сортировки происходят одновременно;пока извлекаются выходные данные карты, они объединяются.

В фазе сокращения вызывается метод reduce(WritableComparable, Iterator, OutputCollector, Reporter) для каждой пары <key, (list of values)> в сгруппированных входах.

Выход сокращениязадача обычно записывается в файловую систему.

Допустимо установить число задач сокращения на ноль, если уменьшение не требуется.В этом случае выходные данные map-задач идут напрямую в FileSystem.

Hive on Tez создает сложную работу (состоящую из множества шагов отображения и сокращения) в виде единого DAG (вершины - это этапы обработки - преобразователи или преобразователи, ребра - передача данных между ними) и может пропускать ненужные этапы и незаписывать промежуточные результаты в постоянное хранилище (HDFS).

Подробнее см. В документации MapReduce .

0 голосов
/ 17 апреля 2019

Да, для CSV или в тех случаях, когда данные хранятся в подходе, ориентированном на строки, считываются все строки (то есть и все столбцы), если существует какая-либо группировка или агрегация, то редуктор выполнит агрегацию.

...