Joe*_*vin 3 hash google-bigquery
试图让我的外部CityHash返回与BigQuery Hash()相同的值.以下是我要匹配的值:

匹配的唯一哈希字符串是空字符串.
在BigQuery查询参考中,它提到它使用CityHash库.我已经尝试过为CityHash使用多个外部库,它们彼此都是一致的,但不是BigQuery Hash()
以下是Go(Golang)的CityHash示例:
package main
import (
"fmt"
"bitbucket.org/creachadair/cityhash"
)
func main() {
var bytesToHash = []byte("mystringtohash")
myHash := int64(cityhash.Hash64(bytesToHash))
fmt.Printf("Hashed version of '%s': %d\n", bytesToHash, myHash)
bytesToHash = []byte("")
myHash = int64(cityhash.Hash64(bytesToHash))
fmt.Printf("Hashed version of '%s': %d\n", bytesToHash, myHash)
}
Run Code Online (Sandbox Code Playgroud)
这是我的程序的输出:
Hashed version of 'mystringtohash': -6615946700494525143
Hashed version of '1234': 882600748797058222
Hashed version of '': -7286425919675154353
Run Code Online (Sandbox Code Playgroud)
在散列之前,BigQuery是否对字符串做了一些特殊的事情?
好的,我花了一些时间浏览代码,这就是我认为发生的事情.
不幸的是,这些版本似乎与版本1.1不兼容,如README中所述(重点是我的):
CityHash v1.1,2012年10月22日
- 添加CityHash32(),用于32位平台.
- 更改现有功能以提高其哈希质量和/或速度.>大多数变化都是次要的,但CityHashCrc*大幅度重新设计(不幸的是,速度可能慢了10%).
- 改进自述文件.
我不确定在这里做什么是正确的,也许BigQuery应该更新它的实现以匹配版本1.1.1,或者它可能是对依赖它的现有用户的重大改变.但至少我们知道现在发生了什么.
| 归档时间: |
|
| 查看次数: |
429 次 |
| 最近记录: |