Я пытаюсь преобразовать процесс хеширования из MySql в куст. В улье мой код не работает с ошибкой ниже
ParseException line 6:7 cannot recognize input near '0xffffff' '>' '50' in expression specificati
Как записать шестнадцатеричное число 0xffffff в улье
Код MySQL (получил логику MySQL из этого справочника http://blog.richardweiss.org/2016/12/25/hash-splits.html:
SELECT if (
conv(
substr(
md5(concat(ID, '-', SALT)),
1, 6),
16, 10)/0xffffff > CONTROL_GROUP_SIZE, 't', 'c')
Код улья:
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')