我有一台安装了Hadoop和Spark的机器。以下是我目前的环境。
python3.6
spark1.5.2
Hadoop 2.7.1.2.3.6.0-3796
我试图通过构建ipython内核来连接jupyter笔记本连接到spark。
写了2个新文件。
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交谈?
仅仅是FYI,直到版本spark 2.1.1才支持python 3.6。见JIRA qazxsw poi
你的问题有很多问题......
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
。
您可以进行一些环境更改以使用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终端上的新命令。