首页 > 解决方案 > 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

标签: pythonhivehiveql

解决方案


推荐阅读