Hive中的伪随机函数?

时间:2018-10-05 16:22:08

标签: random hash hive

我正在尝试在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 :(得分:0)

您可以使用reflect()java_method()函数从Hive调用Java库。例如来自Apache DigestUtils的sha256:

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

自Hive 1.3.0起,哈希函数SHA-2系列为already implemented as built-in functions

关于rand()文档说: 返回从0到1均匀分布的随机数(逐行变化)。指定种子可确保所生成的随机数序列具有确定性。因此,您将获得相同的随机数顺序。与java.util.Random中的相同。推荐的方法是:使用以秒为单位的当前时间作为种子。