python - Hive UDF 的源 Python 虚拟环境
问题描述
我正在使用 Python 虚拟环境来加载我们集群上不可用的模块,以便在 Hive UDF 中使用。我无法获取 venv,因此当在 shell 脚本中调用 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 line 1:2 cannot identify input near 'This' 'file' 'must'
在 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
解决方案
推荐阅读
- r - 在 mlr 和 parallelMap 中可以并行化多个级别吗?例如 mlr.tuneParams 和 mlr.benchmark
- jboss - log4j2 似乎没有遵循我的日志滚动策略
- reactjs - 将 fetch 操作转换为 axios 操作
- c# - “必须声明标量变量@dni”
- c# - 如何修复清单中的不匹配引用和下载的程序集 LINQPad.exe 的标识
- javascript - 如何将相同的选项附加到多个选择下拉框?
- python - Flask Dash 将回调中生成的变量传递给另一个回调
- semplot - 如何为参数估计和协方差单独标记 edge.label.position
- c# - 在 .Net Core 中使用 CSharpCodeProvider
- javascript - 我想执行从服务器获取的代码。我可以在控制台中获取代码。希望该代码在主浏览器页面上执行