2013-04-23 3 views
1

Я занимаюсь потоком Hive Streaming на кластере DSE 3.0 (Hive 0.9) с помощью Python mapper. Мой скрипт python импортирует модуль statsmodels, для которого требуется Python 2.7. Поскольку по умолчанию не 2.7 (это 2.4), я загружаю и устанавливаю его, а также модуль statsmodels.Python 2.7 Modules with Hive Streaming

Однако при выполнении простого улого запроса

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

где «документы» представляет собой таблицу улей с линией струны. Тем не менее, я получаю ошибку:

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

Так что я изменил мой запрос улей, чтобы:

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. Любой совет будет очень благодарен!

Спасибо, AM

+0

Можете ли вы подтвердить, что правильный питон и библиотеки установлены на всех ваших рабочих узлах? – guyrt

ответ

2

Я знаю, что это ABIT старой, однако я наткнулся на такую ​​же проблему недавно и думала, что я ответил бы для кого-то, кто сталкивался с этой проблемой.

Команда python2.7 не будет работать, если у вас установлено более одной версии python.

Существует два способа решения этого вопроса. Во-первых, используйте виртуальную среду python, которая позволит вам запустить ваш скрипт и добавить это как ресурс для распространения по всем вашим узлам. Во-вторых, вы можете узнать, где вы python2.7 LIBS установлены, набрав:

which python2.7 

, а затем ссылаться на место в вашем улье запросе, как так (пример):

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

Внимание каждый узел может имеют другое место, где установлен python2.7, поэтому проверьте перед собой. Еще лучше использовать виртуальную среду.