JupyterNotebook 是一个基于web的交互式开发环境。适合探索式开发以、PoC、数据分析数据挖掘等场景。目前支持运行40 多种编程语言,包括Python, R, Julia, and Scala。
pyspark,apache spark提供的python 开发接口。
pyflink, apache flink提供的python 开发接口。
1.相关性python基础知识
python环境变量
- PYTHONPATH,python的搜索路径,在python中import一个模块,是在这个环境变量定义的目录下查找的。
- PYTHONSTARTUP,Python启动后,先寻找PYTHONSTARTUP环境变量,然后执行此变量指定的python文件。
2. 安装pyspark和pyflink
最好先建立一个虚拟环境, pyspark和pyflink使用的py4j版本冲突,但是并不影响使用。
⚠️:pyflink的package名是“apache-flink”,。
# 创建虚拟环境
python3 -m venv pybigdata
cd pybigdata
#启动虚拟环境
source bin/activate
#安装pyspark
pip install pyspark
#安装pyflink,注意这个包名
pip install apache-flink
#安装jupyter
pip install jupyter
3.pyspark on jupyter
pyspark安装完成后,在虚拟环境的bin目录下会添加若干相关文件,我们最关心的的一个文件是“pyspark”。
这里有几个关键的环境变量:
- SPARK_HOME,如果设置了这个环境变量,
- PYSPARK_DRIVER_PYTHON,spark的driver程序使用的python命令
- PYSPARK_PYTHON,spark节点调用的python命令
- SPARK_HOME,如果设置了这个环境变量,HOME}/python/”目录和“${SPARK_HOME}/python/lib/py4j-0.10.7-src.zip”
- PYSPARK_DRIVER_PYTHON_OPTS,传递给PYSPARK_DRIVER_PYTHON的额外参数。
- PYTHONSTARTUP,设置成了“${SPARK_HOME}/python/pyspark/shell.py”,即在执行pyspark,进入python命令被执行时,要先调用这个脚本,初始化spark环境。
要在pyspark文件中添加环境变量:“PYSPARK_DRIVER_PYTHON=jupyter”和“PYSPARK_DRIVER_PYTHON_OPTS=notebook”。主要添加位置,在调用完find-spark-home,设置才有效。
#要在这个代码片段下面添加环境变量
if [ -z "${SPARK_HOME}" ]; then
source "$(dirname "$0")"/find-spark-home
fi
#这是要添加的环境变量
PYSPARK_DRIVER_PYTHON=jupyter
PYSPARK_DRIVER_PYTHON_OPTS=notebook
环境变量配置完成后,执行“pyspark”,浏览器会打开一下界面:
![a8fc6d513aa4be3535abfaa452accbd2.png](https://i-blog.csdnimg.cn/blog_migrate/0c1331335edda4e96ff7199026754a00.jpeg)
![a8fc6d513aa4be3535abfaa452accbd2.png](https://i-blog.csdnimg.cn/blog_migrate/0c1331335edda4e96ff7199026754a00.jpeg)
新建一个notebook,notebook中绑定了如下变量:sc、spark、sql、sqlContext、sqlCtx。
1.sc变量是一个sparkcontext对象2
![670f4133eeee1f9396d6b7abdafd3947.png](https://i-blog.csdnimg.cn/blog_migrate/55318dc2b6983a9361e7501ea5832981.png)
2. spark变量是一个sparksession对象
![88668ca2789d5d3227f3df0f60429684.png](https://i-blog.csdnimg.cn/blog_migrate/1d1b939e102410985dbe1ed203887970.jpeg)
3. sql变量是sparksession的sql方法
![db61c510ea6449d77ad5963c68ee2e8c.png](https://i-blog.csdnimg.cn/blog_migrate/35fdaaa6a961a2fc8b69185a91eee232.png)
4. sqlCtx和sqlContext是同一个sqlcontext对象
![e23488ac488282a09f3e20b111f0cf39.png](https://i-blog.csdnimg.cn/blog_migrate/26a91b05fe812bef6101044a98b54129.png)
至此就可以使用jupyter以及pyspark进行开发了。
4. pyflink on jupyter
安装完pyflink之后,在虚拟环境的bin目录下会添加若干相关文件,我们最关心的的一个文件是“pyflink-shell.sh”。最后启动代码如下:
# -i: 交互式
# -m: 执行pyflink模块下的shell.py
${PYFLINK_PYTHON} -i -m pyflink.shell
将代码修改为:
# -i: 交互式
# -m: 执行pyflink模块下的shell.py
${PYFLINK_PYTHON} -i -m pyflink.shell
export PYTHONSTARTUP=$FLINK_HOME/shell.py
jupyter notebook
修改$FLINK_HOME/shell.py。将文件的第33行注释掉,下面添加一行“utf8_out = sys.stdout”。代码如下:
# utf8_out = open(sys.stdout.fileno(), mode='w', encoding='utf8', buffering=1)
utf8_out = sys.stdout
$FLINK_HOME/shell.py实际的目录是:“ pybigdata/lib/python3.8/site-packages”。pybigdata是虚拟环境文件夹。
执行如下命令,启动jupyter notebook
# unset这个步骤必须有
# 删除已经存在的FLINK_HOME环境变量
unset FLINK_HOME
pyflink-shell.sh local
打开新的notebook,环境中绑定了四个变量
- 批处理表环境变量名为: bt_env(pyflink.table.table_environment.BatchTableEnvironment)
- 比处理执行环境变量名为:b_env(pyflink.dataset.execution_environment.ExecutionEnvironment)
- 流表环境变量名为:st_env(pyflink.table.table_environment.StreamTableEnvironment)
- 流执行环境变量名为:s_env(pyflink.datastream.stream_execution_environment.StreamExecutionEnvironment)
![681716ec4893c7d5c27d147f301f392d.png](https://i-blog.csdnimg.cn/blog_migrate/5aa0abf1f38892eac677c9b4b5bfabf6.jpeg)