【问题标题】:make Pyspark working inside jupyterhub让 Pyspark 在 jupyterhub 中工作
【发布时间】:2015-10-10 16:04:06
【问题描述】:

我有一台装有 JupyterHub(Python2、Python3、R 和 Bash 内核)的机器。我有 Spark(scala) 和 PySpark 工作。我什至可以在交互式 IPython 笔记本中使用 PySpark,其命令如下:

IPYTHON_OPTS="notebook" $path/to/bin/pyspark

(这会打开一个 Jupyter 笔记本,在 Python2 中我可以使用 Spark)

但我无法让 PySpark 在 JupyterHub 中工作。

the spark kernel 比我真正需要的要多。

我只需要 JupyterHub 中的 Pyspark。有什么建议吗?

谢谢。

【问题讨论】:

    标签: python apache-spark pyspark ipython-notebook jupyterhub


    【解决方案1】:

    我创建了一个公共 gist 来配置 spark2.x 与 jupyterhub 和 cdh5.13 集群。

    【讨论】:

      【解决方案2】:

      你需要配置pyspark内核。

      在我的服务器上,jupyter 内核位于:

      /usr/local/share/jupyter/kernels/
      

      你可以通过创建一个新目录来创建一个新内核:

      mkdir /usr/local/share/jupyter/kernels/pyspark
      

      然后创建 kernel.json 文件 - 我粘贴我的作为参考:

      {
       "display_name": "pySpark (Spark 1.6.0)",
       "language": "python",
       "argv": [
        "/usr/local/bin/python2.7",
        "-m",
        "ipykernel",
        "-f",
        "{connection_file}"
       ],
       "env": {
        "PYSPARK_PYTHON": "/usr/local/bin/python2.7",
        "SPARK_HOME": "/usr/lib/spark",
        "PYTHONPATH": "/usr/lib/spark/python/lib/py4j-0.9-src.zip:/usr/lib/spark/python/",
        "PYTHONSTARTUP": "/usr/lib/spark/python/pyspark/shell.py",
        "PYSPARK_SUBMIT_ARGS": "--master yarn-client pyspark-shell"
       }
      }
      

      调整路径和 python 版本,你的 pyspark 内核就可以使用了。

      【讨论】:

      • JupyterHub 与我写这个问题时相比发生了很大变化。我会试试你的解决方案。谢谢
      • 如有任何问题请留言,我会尽力提供帮助。
      【解决方案3】:

      您可以像往常一样启动 jupyter,并将以下内容添加到代码顶部:

      import sys
      sys.path.insert(0, '<path>/spark/python/')
      sys.path.insert(0, '<path>/spark/python/lib/py4j-0.8.2.1-src.zip')
      import pyspark
      conf = pyspark.SparkConf().set<conf settings>
      sc = pyspark.SparkContext(conf=conf)
      

      并根据您的需要更改尖括号中的部分。

      【讨论】:

      • 我认为有一种方法可以让 JupyterHub 透明地初始化 SparkContext,就像 PySpark 一样。也许解决方案是调用带有更多 argv 的 Python 内核。
      • 通过导出 PYTHONPATH 并禁用 mediator.py 中的安全控制,结果相同。
      • 您能说得更具体些吗?可以把它放在profile?
      【解决方案4】:

      我没有尝试使用 jupiter hub,但这种方法帮助我使用了其他工具(如 spyder)

      我了解 jupiter 服务器本身就是一个 python 脚本。 所以: 复制(或重命名)jupyterhub 到 jupyterhub.py

      运行:

      spark-submit jupyterhub.py

      (将 spark-submit 和 jupyterhub.py 替换为这些文件的完整路径)

      【讨论】:

      • 我认为 spark-submit 仅适用于 jar 文件。
      • 它也适用于python脚本(至少在较新的版本中)
      • 我明白了。因此,我以这种方式在 Spark 集群(本地、独立、mesos 或纱线)中运行 JupyterHub 本身,并且假设打开一个新的 python 笔记本将加载 sparkcontext 和 spark API。这样对吗?哦,我在准备它执行的变量后从 bin/pyspark 看到 exec "$SPARK_HOME"/bin/spark-submit pyspark-shell-main "$@"
      猜你喜欢
      • 1970-01-01
      • 2020-06-22
      • 2021-11-14
      • 2019-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多