Хеш-функция является детерминированной, по определению, ср.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 , но ответ в основном указывает на ту же страницу документации, которую вы уже нашли.