将Jupyter笔记本连接到Spark

问题描述 投票:1回答:3

我有一台安装了Hadoop和Spark的机器。以下是我目前的环境。

python3.6

spark1.5.2

Hadoop 2.7.1.2.3.6.0-3796

我试图通过构建ipython内核来连接jupyter笔记本连接到spark。

写了2个新文件。

  1. /root/.I Python/profile_py spark/I Python_notebook_config.朋友
  2. /root/.I Python/profile_py spark/startup/00-py spark-setup.朋友
  3. /root/anaconda3/share/惧怕英特尔/kernels/py spark/kernel.JSON

kernel.json

{
    "display_name": "PySpark (Spark 2.0.0)",
    "language": "python",
    "argv": [
        "/root/anaconda3/bin/python3",
        "-m",
        "ipykernel",
        "--profile=pyspark"
    ],
    "env": {
        "CAPTURE_STANDARD_OUT": "true",
        "CAPTURE_STANDARD_ERR": "true",
        "SEND_EMPTY_OUTPUT": "false",
        "PYSPARK_PYTHON" : "/root/anaconda3/bin/python3",
        "SPARK_HOME": "/usr/hdp/current/spark-client/"
    }
}

00-py spark-setup.朋友

import os
import sys
os.environ["PYSPARK_PYTHON"] = "/root/anaconda3/bin/python"
os.environ["SPARK_HOME"] = "/usr/hdp/current/spark-client"
os.environ["PYLIB"] = os.environ["SPARK_HOME"] + "/python/lib"
spark_home = os.environ.get('SPARK_HOME', None)
sys.path.insert(0, os.environ["PYLIB"] +"/py4j-0.8.2.1-src.zip")
sys.path.insert(0, os.environ["PYLIB"] +"/pyspark.zip")
exec(open(os.path.join(spark_home, 'python/pyspark/shell.py')).read())

I Python_notebook_config.朋友

c = get_config()
c.NotebookApp.port = 80

然后,当我运行以下

jupyter notebook --profile=pyspark

笔记本电脑运行良好。然后,我将内核更改为'PySpark(Spark 2.0.0)',并假设使用'sc'spark上下文。但是,当我键入'sc'时,它不会显示任何内容。

因此,由于sc无法初始化,如果我想运行以下内容,则失败!

nums = sc.parallelize(xrange(1000000))

谁能帮助我如何配置jupyter笔记本与Spark交谈?

apache-spark pyspark ipython-notebook jupyter ssh-tunnel
3个回答
1
投票

仅仅是FYI,直到版本spark 2.1.1才支持python 3.6。见JIRA qazxsw poi


0
投票

你的问题有很多问题......

1)除了上面的Punskr的回答 - Spark 1.5 https://issues.apache.org/jira/browse/SPARK-19019; only works with Python 2引入了Python 3支持。

2)即使你切换到Python 2或Spark 2.0,你仍然需要导入Pyspark的相关模块并在笔记本中手动初始化upgrade Spark变量

3)您似乎也使用旧版本的Jupyter,因为Jupyter> = 4中没有配置文件功能。

要在Jupyter> = 4中“自动”初始化sc,请参阅我的答案sc


0
投票

您可以进行一些环境更改以使用pyspark默认的ipython或jupyter笔记本。

将以下内容放入here

~/.bashrc

见:export PYSPARK_PYTHON=python3 ## for python3 export PYSPARK_DRIVER_PYTHON=ipython export PYSPARK_DRIVER_PYTHON_OPTS="notebook --no-browser --port=7000"

接下来,运行pyspark on GitHub

然后,当您启动source ~/.bashrc(或使用YARN)时,它将打开一个服务器供您连接。

在具有ssh功能的本地终端上,运行

pyspark

如果你在Windows上,我推荐ssh -N -f -L localhost:8000:localhost:7000 <username>@<host> MobaXterm

打开一个Web浏览器,输入地址Cygwin以通过Spark隧道进入您的笔记本

现在采取一些预防措施,我从未尝试过使用Python 3,所以这可能适用于您,也可能不适合您。无论如何,你应该在Spark 1.5上使用Python 2。我的公司也使用Spark 1.5,因为NO ONE使用Python 3。

更新:

Per @ desertnaut的评论,设置

localhost:8000

如果用户需要使用export PYSPARK_DRIVER_PYTHON=ipython 可能会导致问题。如果你想让笔记本和spark-submit都可用,那么解决方法是创建两个新的环境变量。以下是您可以创建的示例

spark-submit

其中export PYSPARK_PYTHON=python3 ## for python3 export ipyspark='PYSPARK_DRIVER_PYTHON=ipython pyspark' export pynb='PYSPARK_DRIVER_PYTHON_OPTS="notebook --no-browser --port=7000"' ipyspark是bash终端上的新命令。

© www.soinside.com 2019 - 2024. All rights reserved.