python-3.x - 在 Spark 2.1.0 上通过 python3 在 Zeppelin 中使用 pyspark

标签 python-3.x apache-spark pyspark python-3.5 apache-zeppelin

我正在尝试在 Zeppelin 和 python3 (3.5) 中针对 Spark 2.1.0 运行 pyspark。我已经使用 python3 启动并运行了 pyspark shell,但是切换到连接到同一本地集群的 Zeppelin 给出:

Exception: Python in worker has different version 3.5 than that in driver 2.7, PySpark cannot run with different minor versions

我修改了默认的 spark-env.sh 如下:(为了简洁省略了未修改的行)
SPARK_LOCAL_IP=127.0.0.1
SPARK_MASTER_HOST="localhost"
SPARK_MASTER_WEBUI_PORT=8080
SPARK_MASTER_PORT=7077
SPARK_DAEMON_JAVA_OPTS="-Djava.net.preferIPv4Stack=true"
export PYSPARK_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/python3
export PYSPARK_DRIVER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/ipython

凝视一切 ./bin/pyspark一切都很好。

Zeppelin 配置已在 zeppelin-site.xml 中进行修改,仅将 ui 端口从 8080 移至 8666。`zeppelin-env.sh' 已修改如下:(仅显示 mods/additions)
export MASTER=spark://127.0.0.1:7077
export SPARK_APP_NAME=my_zeppelin-mf
export PYSPARK_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/python3
export PYSPARK_DRIVER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/ipython
export PYTHONPATH=/Library/Frameworks/Python.framework/Versions/3.5/bin/python3

我试过使用 Anaconda,但 python 3.6 目前正在使用 Spark 创建问题。此外,我使用了一系列上述配置设置的组合,但没有成功。

配置中引用了一个设置 zeppelin.pyspark.python默认为 python但从文档中不清楚如何/在何处将其调整为 python3。为了帮助消除 OSX 细节,我也能够在 LinuxMint 18.1 上复制此故障。
  • 在 OSX 10.11.6 上本地运行
  • Spark 是 2.1.0-bin-hadoop2.7
  • 齐柏林飞艇 0.7.0-bin-all

  • 所以我一直在浏览 Zeppelin 文档和互联网,试图找到正确的配置设置,让 Zeppelin 作为 3.5 驱动程序运行。希望我错过了一些明显的东西,但我似乎无法找到这个。希望有人成功完成此操作并帮助识别我的错误。

    谢谢你。

    最佳答案

    设置%pyspark的正确方法通过 Zeppelin UI 使用 python 3 的解释器如下(在 apache/zeppelin docker 容器上测试)。

  • 单击您的用户菜单
  • 点击 Interpreter菜单项
  • 搜索 spark翻译
  • 设置 zeppelin.pyspark.python配置属性为 python3
  • 点击Save
  • 点击 Restart右上角重启解释器

  • 您现在可以检查 python 的版本打开 Notebook 并运行以下代码:
    %pyspark
    import sys
    sys.version_info
    

    你应该看到这样的输出
    sys.version_info(major=3, minor=5, micro=2, releaselevel='final', serial=0)
    

    您还必须像这样将 PYSPARK_PYTHON 和 PYSPARK_PYTHON_DRIVER 设置为 python3(使用 apache/zeppelin docker 容器的示例,假设 zeppelin 作为容器名称):
    docker exec -it zeppelin bash
    cd /zeppelin/conf
    cp zeppelin-env.sh.template zeppelin-env.sh
    cat <<EOF >> zeppelin-env.sh
    export PYSPARK_PYTHON=python3
    export PYSPARK_DRIVER_PYTHON=python3
    EOF
    # Now, press Ctrl+d to exit the container
    docker restart zeppelin
    

    现在一切都已设置为使用 python3 运行 pyspark

    关于python-3.x - 在 Spark 2.1.0 上通过 python3 在 Zeppelin 中使用 pyspark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42251428/

    相关文章:

    Java Spark 禁用 Hadoop 发现

    python - 比较数据框中的列以获得所需的输出

    python - 使用python将csv分割成小csv

    python - 有没有一种简单的方法可以将一个环境中的相同 Python 库安装到新的 Python 环境中?

    apache-spark - spark提交 "Service '驱动程序'无法绑定(bind)端口“错误

    python - 根据 pyspark 中的条件合并 spark 中的两行

    python - 将数据帧保存到多个保留数据帧名称的 CSV

    scala - 如何在spark中使用由orElse组成的部分函数作为udf

    python - pyspark.sql.utils.IllegalArgumentException : 'requirement failed: Invalid initial capacity'

    java - 在Scala中使用Scala内核