我正在使用Python虚拟环境加载模块,这些模块在我们的集群上不可用,无法在Hive UDF中使用。我无法获取venv,因此在外壳程序脚本中调用Python UDF时,脚本错误是因为找不到模块。
从shell脚本调用ls时,venv出现在列表中。
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 / activate不是文件。
SOURCE ../venv/bin/activate;
失败的结果:ParseException行1:2无法识别“此”“文件”“必须”附近的输入
在shell脚本中,如果我尝试使用:
. venv/bin/activate
它返回退出代码1。
有什么想法吗?
谢谢, 戴夫
已使用以下命令解决:https://stackoverflow.com/a/23069201/10542262
在shell脚本中,而不是这样做:
python [path]/[script].py
您可以从venv调用Python,而不再需要激活venv。
[path/to/venv/]/bin/python [path]/[script].py