Псевдослучайная функция в Hive? - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь получить детерминированную псевдослучайную функцию в Hive.Я пробовал checksum, но, видимо, это просто SQL, а не Hive.Я

select hash(1) дал мне 1

select rand(1), rand(2), rand(3) получил меня 0.730878191 0.731146936 0.731057369

Есть ли криптографически безопасный хеш в Hive?Почему rand не случайно?

1 Ответ

0 голосов
/ 05 октября 2018

Вы можете вызвать библиотеку Java из Hive, используя функции reflect() или java_method().Например, sha256 из Apache DigestUtils :

SELECT reflect('org.apache.commons.codec.digest.DigestUtils', 'sha256Hex', 'message');

Начиная с Hive 1.3.0, хеш-функции семейства SHA-2 уже реализованы как встроенные-в функции .

О документации rand () говорится: Возвращает случайное число (которое меняется от строки к строке), которое распределено равномерно от 0 до 1. Указание начального числа обеспечит детерминированность сгенерированной последовательности случайных чисел. Итак, вы получите ту же случайную последовательность.Так же, как в java.util.Random.И рекомендация: используйте текущее время в секундах в качестве начального числа.

...