hadoop - hive 哈希进行A/B测试

标签 hadoop hash hive md5

我试图将哈希过程从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/

相关文章:

Windows : Unable to load native-hadoop library for your platform. 上的 Hadoop 安装 .. 在适用的情况下使用内置 java 类

ubuntu - 有 0 个数据节点正在运行,并且没有节点被排除在此操作中

c# - 如何在 C# 中使用 BouncyCaSTLe 进行 Blowfish 单向哈希?

python - 为字典实现自定义键,以便同一类的 2 个实例匹配

arrays - 数组列值与配置单元中正常列值之间的比较

hadoop - 在hadoop/hive中执行脚本

hadoop 未在多节点集群中运行

php - 第二种意见的安全性优势,我通过 postgresql 散列和加盐用户密码的计划是否存在缺陷?

bash - bash脚本中的直线查询

hadoop - 为什么增加 reducer 的数量会增加运行减速阶段的时间?