Эти параметры используются для принятия решения о том, когда использовать Map Join
против Common join
в улье, что в конечном итоге влияет на производительность запросов в конце.
Map join
используется, когда одна из таблиц соединенияОн достаточно мал, чтобы поместиться в памяти, поэтому он очень быстрый.Вот объяснение всех параметров:
hive.auto.convert.join
Когда этот параметр установлен на true
, Hive автоматически проверит, больше ли размер файла таблицы меньше, чемзначение, указанное hive.mapjoin.smalltable.filesize
, если оно больше, чем это значение, запрос выполняется через общее соединение.После включения автоматического преобразования объединений нет необходимости указывать подсказки объединения карт в запросе.
hive.auto.convert.join.noconditionaltask
Когда три или более таблиц участвуют вjoin и
hive.auto.convert.join = true
- Hive генерирует три или более объединений на стороне карты с предположением, что все таблицы имеют меньший размер.
hive.auto.convert.join.noconditionaltask = true
, куст объединит три или более объединений на стороне карты в одно объединение на стороне карты, если размер таблицы n-1 меньше 10 МБ.Здесь размер определяется как hive.auto.convert.join.noconditionaltask.size
.
hive.mapjoin.smalltable.filesize
Этот параметр в основном позволяет оптимизатору определить определение маленькой таблицы в вашей системе.Это значение определяет, какая таблица для вас мала, и затем, когда запрос выполняется на основе этого значения, он определяет, может ли соединение преобразовать в map join
.
hive.auto.convert.join.noconditionaltask.size
Конфигурация размера позволяет пользователю контролировать, какой размер таблицы может поместиться в памяти.Это значение представляет собой сумму размеров таблиц, которые можно преобразовать в хеш-карты, которые помещаются в памяти.
Вот очень хорошая ссылка с пояснениями, которая включает описание всех 4 параметров с примером:
http://www.openkb.info/2016/01/difference-between-hivemapjoinsmalltabl.html