Impala 中的 fnv_hash() 与 oracle 哈希值
Posted
技术标签:
【中文标题】Impala 中的 fnv_hash() 与 oracle 哈希值【英文标题】:fnv_hash() in Impala vs oracle hash value 【发布时间】:2021-09-29 11:32:24 【问题描述】:我们如何在 oracle db 中获得与 impala 相同的哈希值。
我已将表和代码从 impala 迁移到 oracle。一些查询在 impala 中使用带有 FNV_HASH
函数的哈希值,现在我们也必须在 oracle 中使用相同的 has 值。
我使用了以下函数,但获得了除 fnv_hash() 值之外的不同值。
select ora_hash(col1) from tab1;
o/p Like (32 bit crypto) : 383995946
select standard_hash(col1) from tab1;
o/p Like : 1C573524423F604D0A784304DF9D3987C9FF8491
but fnv_hash () has different values in impala.
select fnv_hash(col1) from tab1;
o/p like (64 bit crypto) : 560601135861444766
能否请您帮助我了解如何在 oracle 中获得与 impala 相同的 64 位 cyypto 值。
【问题讨论】:
【参考方案1】:fnv_hash 实现了一个非加密的Fowler–Noll–Vo hash 函数。 Oracle 的ORA_HASH 是一种专有的非加密散列算法,STANDARD_HASH 实现了许多标准加密散列,如 SHA1、SHA256、SHA384、SHA512 和 MD5。它们永远不会产生相同的输出,因为它们执行的计算不同。
Oracle 似乎没有等效于 fnv_hash 的 64 位。
【讨论】:
以上是关于Impala 中的 fnv_hash() 与 oracle 哈希值的主要内容,如果未能解决你的问题,请参考以下文章
如何在 impala regexp_extract 方法中使用正则表达式 OR 运算符并获得不同的捕获组
Hive中的Timestamp类型日期与Impala中显示不一致分析