Как на md5 целый ряд в Hive? - PullRequest
1 голос
/ 24 марта 2020

Используя Hive, я хочу иметь sh всю строку в запросе.

Я попробовал следующее (не обращайте внимания на $ {xxx}, запрос построен из сценария bash ):

    SELECT md5(*) FROM ${DATABASE_NAME_SUFFIXE}.${DATABASE_PREFIXE}_${TABLE_NAME} WHERE 
${TABLE_DATE_FIELD} <= '${LIMIT_DATE}' ORDER BY ${CREATION_DATE_FIELD} DESC LIMIT 1

Возвращает следующую ошибку:

Строка 1: 7 Неправильные аргументы 'md5': нет подходящего метода для класса org. apache .had oop .hive.ql.udf.UDFMd5 с (bigint, int, varchar (128), временная метка, timestamp, varchar (64), varchar (64), varchar (64), int, bigint, int, varchar (50)) varchar (255), bigint, временная метка, timestamp, varchar (64), bigint, временная метка, timestamp, varchar (64), int, int, char (38), varchar (40), varchar (1)). Возможные варианты: FUN C (двоичный файл) FUN C (строка)

Если я правильно понял из ошибки и из документации Функция MD5, мне нужно передать двоичный файл или строку. Как я могу добиться этого?

Редактировать: также пытался:

SELECT md5(SELECT * FROM ${DATABASE_NAME_SUFFIXE}.${DATABASE_PREFIXE}_${TABLE_NAME} WHERE ${TABLE_DATE_FIELD} <= '${LIMIT_DATE}' ORDER BY ${CREATION_DATE_FIELD} DESC LIMIT 1) 

, который возвращает

не может распознать ввод вблизи 'SELECT' '*' 'FROM' в спецификации функции

1 Ответ

1 голос
/ 24 марта 2020

concat все столбцы и затем md5() в сцепленном столбце.

select md5(concat(a,b)) as md5 from (select string("abc")a,int("2")b)e;
+--------------------------------+
|md5                             |
+--------------------------------+
|63872b5565b2179bd72ea9c339192543|
+--------------------------------+

Мы также можем определить переменную , имеющую все имена столбцов, а затем использовать в concat функцию!


Try with concat(*):

select md5(concat(*)) as md5 from (select string("abc")a,int("2")b)e;
+--------------------------------+
|md5                             |
+--------------------------------+
|63872b5565b2179bd72ea9c339192543|
+--------------------------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...