Запустить Python скрипт в импала-оболочке - PullRequest
0 голосов
/ 26 марта 2020

Я могу запустить текстовый файл с запросами, разделенными символом ';' в импала-оболочке. Однако у меня есть несколько запросов, которые требуют результатов другого запроса. Например, если Query1 дает мне name | age | birthday, а затем следующий запрос будет выглядеть примерно так: SELECT * FROM table1 WHERE age in (...), и эти возрасты будут из столбца age из первого запроса.

Я знаю, что вы можете указать с параметром --vars, но это похоже на вставку значений c. Есть ли способ создать скрипт Python для обработки чего-то подобного, который будет работать в оболочке impala?

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Вы можете создавать скрипты. sh или .py или. ??? и запустите их из оболочки impala.

Чтобы вызвать командную строку оболочки linux из типа оболочки impala:

impala> shell <linux shell command>;

в качестве примера

[localhost.localdomain:21000] > shell ls -ltr /home;
[localhost.localdomain:21000] > shell hdfs dfs -ls /;

[localhost.localdomain:21000] > shell spark-submit --master yarn /home/cloudera/query.py;

[localhost.localdomain:21000] > shell /home/cloudera/check-services.sh;
Graphite: ko
Zookeeper: ko
KafkaServer: ko
--------

[localhost.localdomain:21000] > shell python /home/cloudera/executable.py

Надеюсь, это может быть полезно.

С уважением.

0 голосов
/ 13 апреля 2020

Я думаю, что создание временных таблиц поможет здесь. Решение Impala Only -
шаг 0 - загрузить таблицу из файла.
шаг 1 - создать временную таблицу tmp_table в качестве запроса 1.
шаг 2 SELECT * FROM table1 ГДЕ возраст в (tmp_table).
шаг 3 - Удалить таблицу tmp_table.
Вы также можете использовать подзапрос, если все они находятся в таблицах импалы.
SELECT * FROM table1 ГДЕ возраст (выберите возраст из Query1)

Да, вы всегда можете используйте python для запуска запросов оболочки impala. Но они будут похожи на скрипты вызова один за другим, и по вашему требованию вы можете делать их полностью в импале.

...