Я использую виртуальную среду Python для загрузки модулей, которые недоступны в нашем кластере для использования в Hive UDF.Я не могу найти источник venv, поэтому, когда в сценарии оболочки вызывается UDF Python, сценарий выдает ошибки, поскольку модули не могут быть найдены.
При вызове ls из сценария оболочки venv появляется вlist.
DELETE FILE /temp/venv;
ADD FILE /temp/venv;
DELETE FILE udf.sh;
ADD FILE udf.sh;
SOURCE venv/bin/activate;
SELECT TRANSFORM(1)
USING 'bash udf.sh'
AS (test_result)
Результаты в файле: venv / bin / activ - это не файл.
SOURCE ../venv/bin/activate;
Результаты в FAILED: ParseException строка 1: 2 не может распознать ввод рядом с 'This''file' 'must'
В сценарии оболочки, если я попытаюсь использовать:
. venv/bin/activate
Возвращает код выхода 1.
Есть мысли?
Спасибо, Дейв
Решено с помощью этого: https://stackoverflow.com/a/23069201/10542262
В сценарии оболочки вместо выполнения:
python [path]/[script].py
Вы можете вызватьPython из venv и больше не нужно активировать venv.
[path/to/venv/]/bin/python [path]/[script].py