1

我正在使用 Python 映射器在 DSE 3.0 集群(Hive 0.9)上进行 Hive 流处理。我的 python 脚本导入了需要 Python 2.7 的 statsmodels 模块。由于默认不是 2.7(它是 2.4),我下载并安装它,以及 statsmodels 模块。

但是,在运行简单的 Hive 查询时

hive> select transform (line) using 'python python-mapper.py' from docs;

其中“docs”是带有行 STRING 的 Hive 表。但是,我收到错误:

File "python-mapper.py", line 6, in ?
import statsmodels
ImportError: No module named statsmodels

所以我将我的 Hive 查询更改为:

hive> select transform (line) using 'python2.7 python-mapper.py' from docs;

调用 2.7 版。但后来我得到了错误

Caused by: java.io.IOException: Cannot run program "python2.7": 
           java.io.IOException: error=2, No such file or directory

我也尝试过 python27 和 /usr/local/bin/python2.7 并且仍然遇到相同的错误。有没有人遇到过这个?我已经参考了文章On linux SUSE or RedHat, how do I load Python 2.7的第二个答案。任何建议将不胜感激!

谢谢,上午

4

1 回答 1

2

我知道这有点老了,但是我最近遇到了同样的问题,并认为我会为遇到这个问题的其他人回答。

如果您安装了多个版本的 python,python2.7 命令将不起作用。

有两种方法可以解决这个问题。一,使用 python 虚拟环境,这将允许您启动脚本并将其添加为资源以分发到所有节点。二,您可以通过键入以下内容来查找 python2.7 库的安装位置:

which python2.7

然后像这样引用您的配置单元查询中的位置(示例):

select transform (line) using '/usr/local/bin/python2.7 python-mapper.py' from docs;

注意每个节点可能有不同的安装 python2.7 的位置,因此请事先检查。最好使用虚拟环境。

于 2015-02-14T00:33:54.917 回答