Используя 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' в спецификации функции