В Билайне не работает функция Hive Concat - PullRequest
0 голосов
/ 05 февраля 2019
${beeline_url} --silent=true --showHeader=false --outputformat=csv2 --showWarnings=false -e "select concat('invalidate metadata ', trim(table_name) , '; refresh ', trim(table_name) ,';') from my_Table " > /home/table_list.csv

Я пытаюсь выполнить этот запрос с ошибкой.Тот же запрос работает нормально в кустах, оттенках и даже с beeline.

при использовании beeline, приведенный ниже запрос дал результаты

0: jdbc:hive2://host> select concat("invalidate metadata ", trim(table_name)) from my_Table; 

Я попытался сохранить запрос в файле, но он завершилсяв ошибке.

${beeline_url} --silent=true --showHeader=false --outputformat=csv2 --verbose=false --showWarnings=false -f get_table_list.hql > /home/table_list.csv

, где get_table_list.hql имеет

SELECT (CONCAT('invalidate metadata ', trim(table_name) , '; refresh ', trim(table_name) ,';')) from my_table;

Ошибка:

Ошибка: ошибка при компиляции оператора: СБОЙ: ParseException строка 1:59 не может распознатьввод рядом с '' '' '' 'в выражении выбора (состояние = 42000, код = 40000)

1 Ответ

0 голосов
/ 05 февраля 2019

Точки с запятой необходимо экранировать, используя \\:

SELECT (CONCAT('invalidate metadata ', trim(table_name) , '\\; refresh ', trim(table_name) ,'\\;')) from my_table;

Или замените их на \073:

SELECT (CONCAT('invalidate metadata ', trim(table_name) , '\073 refresh ', trim(table_name) ,'\073')) from my_table;

Один из этих обходных путей должен работать.

...