Я использую Cloudera VM с Apache Zeppelin
Для одного проекта временного ряда мне пришлось установить пакет Anaconda, потому что мне нужно было несколько пакетов Python (Pandas и FBProhet).
Работает нормально, если я использую интерпретатор %spark.pyspark
и указываю свой двоичный файл python на /home/oracle/.conda/envs/prophet/bin/python
(это среда conda с пандами и пророком)
Но когда я использую интерпретатор python вместо spark, я получаю следующую ошибку: (когда вы используете anaconda, вы должны активировать необходимую среду)
%python.conda info
java.lang.RuntimeException: Failed to execute `conda info` exited with 1
at org.apache.zeppelin.python.PythonCondaInterpreter.runCommand(PythonCondaInterpreter.java:412)
[...]
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
zeppelin.python для двоичного файла python для определенной среды, но я должен быть в состоянии заставить его работать со средой python и иметь возможность переключаться на другую среду без изменения переменных среды или настроек Zeppelin.
Если я установлю следующие переменные в zeppelin-env.sh, он будет работать нормально:
export PYSPARK_PYTHON=/home/oracle/.conda/envs/prophet/bin/python
export PYTHONPATH=/home/oracle/.conda/envs/prophet/bin
Но они должны указывать на нейтральный путь:
export PYSPARK_PYTHON=/opt/cloudera/parcels/Anaconda/bin/python
export PYTHONPATH=/opt/cloudera/parcels/Anaconda/bin
Но в этом случае это не работает, потому что интерпретатор не может найти необходимые библиотеки (Pandas, FBProphet и т. Д.)
Согласно официальной документации следующая строка является первой в одном блокноте Zeppelin
%python.conda info
, которая выдает следующую ошибку:
java.lang.RuntimeException: Failed to execute `conda info` exited with 1
at org.apache.zeppelin.python.PythonCondaInterpreter.runCommand(PythonCondaInterpreter.java:412)
at org.apache.zeppelin.python.PythonCondaInterpreter.runCondaCommandForTextOutput(PythonCondaInterpreter.java:180)
at org.apache.zeppelin.python.PythonCondaInterpreter.runCondaInfo(PythonCondaInterpreter.java:263)
at org.apache.zeppelin.python.PythonCondaInterpreter.interpret(PythonCondaInterpreter.java:108)
at org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java:103)
at org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:632)
at org.apache.zeppelin.scheduler.Job.run(Job.java:188)
at org.apache.zeppelin.scheduler.FIFOScheduler$1.run(FIFOScheduler.java:140)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Я ожидаю, что смогу переключаться между средами anaconda при использовании python в качестве интерпретатора Zeppelin