Spark+Ipython+notebook
安装Ipython+notebook
pip install IPython
pip install urllib3 (安装IPython Notebook的依赖)
pip install jupyter (安装IPython Notebook)
(以下为建议安装的包)
pip install numpy
pip install matplotlib
pip install pandas
pip install scipy
pip install scikit-learn
运行Ipython+notebook
ipython notebook / jupyter notebook
注意:python3.6以上版本与ipython notebook存在兼容性问题会导致ModuleNotFoundError,建议使用pyenv安装python3.5及以下版本
注意:运行ipython notebook后退出时使用两次ctrl+c结束服务,否则可能导致端口占用
运行pyspark/spark-submit
pyspark/spark-submit
注意:若以python3运行pyspark需要jdk1.8以上
为集群上的pyspark启动Ipython+notebook
首先创建一个用于PySpark的IPython配置文件。
ipython profile create pyspark
这应该已经创建了配置文件目录~/.ipython/profile_pyspark/ 并且生成包含ipython_notebook_config.py的3个文件(有的会没有该文件,就自行创建即可)。
用Ipython生成密码
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
sha1:****
将生成的密码密文复制下来
修改默认配置文件ipython_notebook_config.py
vim ~/.ipython/profile_pyspark/ipython_notebook_config.py
添加如下代码
c.NotebookApp.ip='*'
c.NotebookApp.password = 'sha1:****刚才复制的那个密文'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8500 #随便指定一个端口,注意与CDH的冲突
创建~/.ipython/profile_pyspark/startup/00-pyspark-setup.py
添加如下代码
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.10.1-src.zip'))#py4j-0.10.1-src.zip的版本自己切换目录ls查询后,做相应修改
execfile(os.path.join(spark_home, 'python/pyspark/shell.py'))
设置环境变量
vim ~/.bashrc
添加如下环境变量
export SPARK_HOME='/usr/lib/spark' #这里的spark目录按照实际目录配置
export PYSPARK_SUBMIT_ARGS='--master yarn --deploy-mode client --num-executors 24 --executor-memory 2g --executor-cores 5'
export PYSPARK_DRIVER_PYTHON=ipython
export PYSPARK_DRIVER_PYTHON_OPTS="notebook --ip=*" #ip地址根据所连接集群的具体ip配置
然后source ~/.bashrc,就可以通过启动 pyspark 来启动 IPython Notebook 了.