Разбор строковых переменных из оболочки Unix в HiveQL - PullRequest
0 голосов
/ 26 октября 2018

У меня есть файл сценария оболочки, который я анализирую как числовые, так и строковые переменные.Пример ниже:

Сценарий оболочки

hive --hiveconf time_1=34600 --hiveconf time_2=34588 --hiveconf message="hello_world" -f mytask.hql

Также у меня есть запрос Hive в соответствующем файле 'mytask.hql' следующим образом:

HiveQL файл

SELECT col1, col2, ${hiveconf:message} AS myMessage
FROM table1
WHERE trtime between ${hiveconf:time_1} and ${hiveconf:time_2};

Проблема в том, что я хочу, чтобы столбец содержал сообщение «Hello world» или что-то внешнее - из Unix Shell Script - переменная содержит, вв каждой строке, но я получаю следующую ошибку:

[Ошибка 10004]: строка xxx Недопустимый псевдоним таблицы или ссылка на столбец hello_world: (возможные имена столбцов: col1,col2 ... (Etc.)

Вывод, который я хочу получить, выглядит примерно так:

enter image description here

1 Ответ

0 голосов
/ 26 октября 2018

Строковые константы в SQL должны заключаться в кавычки с помощью одинарных кавычек: '${hiveconf:message}':

SELECT col1, col2, '${hiveconf:message}' AS myMessage
FROM table1
WHERE trtime between ${hiveconf:time_1} and ${hiveconf:time_2};

И без кавычек $ {hiveconf: message} разрешается в hello_world, без кавычек это выглядит как столбец, а не какпостоянный, вот почему вы получили такое исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...