如果不将 Anaconda 库添加到 %PATH,Zeppelin %python.conda 和 %python.sql 解释器将无法工作
Zeppelin %python.conda and %python.sql interpreters do not work without adding Anaconda libraries to %PATH
我遇到以下情况:我想将 Anaconda3 与 Zeppelin 和 Spark 一起使用。
我已经安装了以下组件:
- HDP 2.5
- Spark 2.0.0.x(HDP 2.5 附带的版本)
- 飞艇 0.7.3
- Anaconda3 with Python 3.5.4(Spark 2.0.0 中的 PySpark 和 Python 3.6 不是朋友)
- Python 2.7 随 HDP 2.5 提供,在 /usr/bin 中可用,此路径已添加到 $PATH
基本上,我将 Python 解释器配置为指向我的 anaconda 版本,在我的例子中是 /opt/anaconda3/bin/python,这是可行的。我还编辑了 zeppelin.sh 脚本:
export PYTHONPATH="${SPARK_HOME}/python:${SPARK_HOME}/python/lib/py4j-0.8.2.1-src.zip"
export SPARK_YARN_USER_ENV="PYTHONPATH=${PYTHONPATH}"
export PYSPARK_DRIVER_PYTHON="/var/opt/teradata/anaconda3/envs/py35/bin/ipython"
export PYSPARK_PYTHON="/var/opt/teradata/anaconda3/envs/py35/bin/python"
export PYLIB="/var/opt/teradata/anaconda3/envs/py35/lib"
至此一切正常。
当我尝试 %python.conda 和 %python.sql 解释器时,它们失败了,因为 conda 命令没有找到, pandas 也没有。
我将库位置添加到 $PATH 环境变量,Zeppelin 能够找到这些命令,但副作用是,整个环境的默认 Python 版本变成了3.5 而不是 2.7 我开始得到另一个像这样的错误:
apache.zeppelin.interpreter.InterpreterException: File "/usr/bin/hdp-select", line 205
print "ERROR: Invalid package - " + name
^
SyntaxError: Missing parentheses in call to 'print'
ls: cannot access /usr/hdp//hadoop/lib: No such file or directory
Exception in thread "main" java.lang.IllegalStateException: hdp.version is not set while running Spark under HDP, please set through HDP_VERSION in spark-env.sh or add a java-opts file in conf with -Dhdp.version=xxx
当我切换回来并从 $PATH 中删除 Python3 个库时,它再次工作。
是否有任何优化的方法来配置我的环境以使一切正常工作并使其易于管理和维护?
我正在考虑在 /var/lib 中为需要找到的文件创建符号链接,但我不知道需要多少个,我不想为除了 python3.
任何意见将不胜感激。
亲切的问候,保罗
我运行进入同样的错误。经过调查,我找到了错误的来源 here。看起来 Zeppelin 默认为“/bin/conda”作为 conda 的默认路径。
我能够通过执行以下操作修复它:
- 创建指向 /bin/conda 的符号链接:
ln -s /opt/anaconda3/bin/conda /bin/conda
- 创建指向 /bin/python 的符号链接:
ln -s /opt/anaconda3/bin/python /bin/python
- 在 Python 解释器的设置中,将 zeppelin.python 设置为
/opt/anaconda3/bin/python3
- 将 /usr/lib/zeppelin/conf/zeppelin-env.sh 中的 PYTHONPATH 设置为
export PYTHONPATH=/opt/anaconda3/bin
看起来此行为也存在 JIRA 问题 here。
我遇到以下情况:我想将 Anaconda3 与 Zeppelin 和 Spark 一起使用。
我已经安装了以下组件:
- HDP 2.5
- Spark 2.0.0.x(HDP 2.5 附带的版本)
- 飞艇 0.7.3
- Anaconda3 with Python 3.5.4(Spark 2.0.0 中的 PySpark 和 Python 3.6 不是朋友)
- Python 2.7 随 HDP 2.5 提供,在 /usr/bin 中可用,此路径已添加到 $PATH
基本上,我将 Python 解释器配置为指向我的 anaconda 版本,在我的例子中是 /opt/anaconda3/bin/python,这是可行的。我还编辑了 zeppelin.sh 脚本:
export PYTHONPATH="${SPARK_HOME}/python:${SPARK_HOME}/python/lib/py4j-0.8.2.1-src.zip"
export SPARK_YARN_USER_ENV="PYTHONPATH=${PYTHONPATH}"
export PYSPARK_DRIVER_PYTHON="/var/opt/teradata/anaconda3/envs/py35/bin/ipython"
export PYSPARK_PYTHON="/var/opt/teradata/anaconda3/envs/py35/bin/python"
export PYLIB="/var/opt/teradata/anaconda3/envs/py35/lib"
至此一切正常。
当我尝试 %python.conda 和 %python.sql 解释器时,它们失败了,因为 conda 命令没有找到, pandas 也没有。 我将库位置添加到 $PATH 环境变量,Zeppelin 能够找到这些命令,但副作用是,整个环境的默认 Python 版本变成了3.5 而不是 2.7 我开始得到另一个像这样的错误:
apache.zeppelin.interpreter.InterpreterException: File "/usr/bin/hdp-select", line 205
print "ERROR: Invalid package - " + name
^
SyntaxError: Missing parentheses in call to 'print'
ls: cannot access /usr/hdp//hadoop/lib: No such file or directory
Exception in thread "main" java.lang.IllegalStateException: hdp.version is not set while running Spark under HDP, please set through HDP_VERSION in spark-env.sh or add a java-opts file in conf with -Dhdp.version=xxx
当我切换回来并从 $PATH 中删除 Python3 个库时,它再次工作。
是否有任何优化的方法来配置我的环境以使一切正常工作并使其易于管理和维护?
我正在考虑在 /var/lib 中为需要找到的文件创建符号链接,但我不知道需要多少个,我不想为除了 python3.
任何意见将不胜感激。
亲切的问候,保罗
我运行进入同样的错误。经过调查,我找到了错误的来源 here。看起来 Zeppelin 默认为“/bin/conda”作为 conda 的默认路径。
我能够通过执行以下操作修复它:
- 创建指向 /bin/conda 的符号链接:
ln -s /opt/anaconda3/bin/conda /bin/conda
- 创建指向 /bin/python 的符号链接:
ln -s /opt/anaconda3/bin/python /bin/python
- 在 Python 解释器的设置中,将 zeppelin.python 设置为
/opt/anaconda3/bin/python3
- 将 /usr/lib/zeppelin/conf/zeppelin-env.sh 中的 PYTHONPATH 设置为
export PYTHONPATH=/opt/anaconda3/bin
看起来此行为也存在 JIRA 问题 here。