2016-02-11 6 views
0

A Hive query, который объединяется с таблицей, работает 12+ часов.Hive: Join Performance - String vs Int

Этот запрос объединяет столбцы строк. Поэтому для каждого столбца куст должен выполнять сравнение строк. Было бы логично присоединиться к строкам.

Имеет смысл преобразовать столбцы строк в int? Или это влияние в целом считается слишком низким?

ответ

1

Я бы предложил попробовать улучшить производительность соединения, добавив некоторые свойства в запрос куста, которые будут лучше соединяться.

set hive.auto.convert.join=false; 
set hive.auto.convert.join.noconditionaltask=false; 

Я видел вышеуказанные параметры, которые меняют много раз. Может быть, если вы дадите нам больше информации о том, сколько таблиц вы присоединяетесь и насколько они велики. Будет лучшее решение.

+0

Я не согласен, «hive.auto.convert.join» - включить объединение карт, что является приятной особенностью в Hive. Когда одна таблица достаточно мала, куст загружает всю таблицу в память и просматривает другую таблицу, и в результате операция соединения выполняется намного быстрее. Независимо от того, будет ли соединение с картой улучшать ваш запрос, зависит от размера данных и таблиц, но я не думаю, что просто отключить хорошую функцию улья - разумное предложение для повышения производительности. Это хорошее чтение по различным типам объединений в улье, http://www.openkb.info/2014/11/understanding-hive-joins-in-explain.html –