我试图将哈希过程从MySql转换为 hive 。在 hive 中,我的代码失败并出现以下错误
ParseException line 6:7 cannot recognize input near '0xffffff' '>' '50' in expression specificati
如何在Hive中写入十六进制数字0xffffff
MySQL代码(从此引用http://blog.richardweiss.org/2016/12/25/hash-splits.html获得了MySQL逻辑:
SELECT if(
conv(
substr(
md5(concat(ID, '-', SALT)),
1, 6),
16, 10)/0xffffff > CONTROL_GROUP_SIZE, 't', 'c')
hive 代码:
SELECT if(
conv(
substr(
md5(concat('12345', '-','xxx2017')),
1, 6),
16,10)/0xffffff > 50, 't', 'c')
最佳答案
Hive无法识别以0x
开头的十六进制表示形式,就像在Python中一样。因此,只需使用'ffffff'
即可。另外,由于您实际上是在进行小数除法,因此可以添加另一个conv
函数将其转换为小数。
SELECT if(
conv(
substr(
md5(concat('12345', '-','xxx2017')),
1, 6),
16,10)/conv('ffffff',16,10) > 50, 't', 'c')
关于hadoop - hive 哈希进行A/B测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49703386/