伪随机函数?

6uxekuva  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(428)

我想在Hive里得到一个确定的伪随机函数。我试过了 checksum ,但显然这只是sql,而不是hive。是的 select hash(1) 给了我
1 select rand(1), rand(2), rand(3) 抓住我了 0.730878191 0.731146936 0.731057369 配置单元中有加密安全的哈希吗?为什么是 rand 不是随机的?

d6kp6zgx

d6kp6zgx1#

您可以使用 reflect() 或者 java_method() 功能。例如,apache digestutils中的sha256:

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

从hive1.3.0开始,sha-2散列函数家族已经实现为内置函数。
about rand()文档说明:返回一个从0到1均匀分布的随机数(从一行到另一行变化)。指定种子将确保生成的随机数序列是确定性的。所以,你会得到同样的随机序列。与java.util.random中的相同。建议是:以秒为单位使用当前时间作为种子。

相关问题