Как работает встроенная хэш-функция Apache Hive и где я могу найти эту документацию? - PullRequest
0 голосов
/ 25 сентября 2018

Я работаю с Apache Hive и должен быть уверен, как работает встроенная хеш-функция.Я нашел эту страницу со списком hash под доп.Функции раздел.В нем говорится, что hash было доступно «По состоянию на Улей 0.4».

Я просто хотел бы увидеть некоторую документацию о том, что именно он делает.Это детерминистично?Будет ли он всегда давать один и тот же вывод при одинаковом входеСколько столкновений мне следует ожидать?

1 Ответ

0 голосов
/ 25 сентября 2018

Хеш-функция является детерминированной, по определению, ср.https://en.wikipedia.org/wiki/Hash_function#Determinism
Таким образом, если реализация hash() не является детерминированной, то это будет ошибка, и кто-то заметит!

Предупреждение: эта реализация может быть изменена (иисправление ошибок), следовательно, детерминизм обозначает только данную версию Hive.


Hive - Open Source.Документация неплохая по стандартам Apache, но все же неполная.Просто проверьте исходный код => https://github.com/apache/hive

Для Hive 2.1, например:

  • функция hash() (UDF в языке Hive) определены здесь
  • он просто вызывает ObjectInspectorUtils.getBucketHashCode(), который вызывает ObjectInspectorUtils.hashCode() для каждого аргумента, а затем объединяет свой хэш в глобальный хэш "bucket" - как определено здесь
  • комментарий показывает, что (грубый) метод хеширования, реализованный Hive, получен из String.hashCode()


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