Есть ли доказанная разница в производительности между соединениями в Hive на INT/BIGINT и VARCHAR?
В течение многих лет я читал / слышал о "преимуществах в производительности" объединений баз данных в столбцах bigint, которые имеют OVER объединений в столбцах (var)char.
К сожалению, при поиске реальных ответов / советов по поводу "вопросов одинакового типа":
- Используемые примеры находятся в "традиционном" контексте СУБД, таком как Mysql или Oracle / SQL Server. Возьмите например этот вопрос или этот пример
- Ответ довольно старый, и конечная разница во времени выполнения не так уж велика. Снова, посмотрите этот пример
Я не видел пример использования версии Hive (предпочтительно версии 1.2.1 или выше), в которой большой (BIG-DATA-ISH) набор данных (скажем, 500 миллионов + строк) соединяется с набором данных аналогичного размера для:
- колонна Бигинта
- ПРОТИВ (var)Char(32) столбец.
- ПРОТИВ (var)Char(255) столбец.
Я выбираю размер 32, потому что это размер хеша MD5, преобразованного в символы, и 255, потому что он "в диапазоне" самого большого натурального ключа, который я когда-либо видел.
Кроме того, я ожидал бы Улей:
- бежать под двигателем Tez
- использовать (сжатый) формат файла, такой как ORC + ZLip / Snappy
Кто-нибудь знает такой пример, подтвержденный доказательствами, показывающими планы Hive Explain, ресурсы ЦП, файловые и сетевые ресурсы + время выполнения запросов?