Xshell远程集群上的pyspark中配置ipython notebook
安装条件
Xshell集群上已经安装spark、pyspark和python
安装并配置jupyter notebook
在Xshell集群终端中输入以下代码安装jupyter notebook
pip install jupyter
pip install notebook
在python中生成Notebook配置文件的秘钥
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
sha1:****
把生成的秘钥sha1复制下来
创建一个与pyspark一起使用的notebook配置文件
ipython profile create pyspark
编辑文件
vi ~/.ipython/profile_pyspark/ipython_notebook_config.py
对如下参数进行修改
c.NotebookApp.ip=’*’ # 修改ip为任意ip
c.NotebookApp.password = ‘sha1:****刚才复制的那个密文’
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 #默认端口为8888,可随意指定
设置spark_home环境变量
vi ~/.bashrc
添加如下内容:
export SPARK_HOME=’/opt/cloudera/parcels/CDH/lib/spark’ #修改为自己的spark目录文件
export PYSPARK_SUBMIT_ARGS=’–master yarn --deploy-mode client --num-executors 24 --executor-memory 10g --executor-cores 5’ # 可选,设置集群参数
export PYSPARK_DRIVER_PYTHON=ipython
export PYSPARK_DRIVER_PYTHON_OPTS=“notebook” 设置启动pyspark即可打开notebook
设置Xshell会话属性
右键打开Xshell会话-属性-隧道
点击添加,侦听端口和目标端口均填写之前修改的端口,我使用的是默认的8888
点击“确定”后,取消勾选下方的“X11转移”,点击“确定”保存设置。
测试使用
在Xshell终端中直接输入pyspark,即会跳出notebook编辑的链接地址( Or copy and paste one of these URLs:下方给出的链接地址即是),复制到本地的浏览器即可使用notebook。
新建python文件:
import os
import sys
spark_home = os.environ.get('SPARK_HOME', None)
if not spark_home:
raise ValueError('SPARK_HOME environment variable is not set')
sys.path.insert(0, os.path.join(spark_home, 'python'))
sys.path.insert(0, os.path.join(spark_home, 'python/lib/py4j-0.8.1-src.zip'))#py4j-0.8.1-src.zip的版本自己切换目录ls查询后,做相应修改
exec(open(os.path.join(spark_home, 'python/pyspark/shell.py')).read())
from pyspark import SparkContext,SparkConf
from pyspark.sql import SparkSession
未报错即配置成功