发布日期:2022-03-06 VIP内容

使用Jupyter Notebook进行交互式分析

数据分析师最喜欢的一个交互式分析工具是Jupyter Notebook,因此也希望在应用Spark进行大数据分析时也使用Jupyter。下面我们就配置PySpark与Jupyter的组合。

有两种方法可以使PySpark在Jupyter Notebook中可用:

  • 配置PySpark驱动程序使用Jupyter Notebook:运行pyspark将自动打开一个Jupyter Notebook。
  • 加载一个普通的Jupyter Notebook,并使用findSpark包加载PySpark。

第一种方法更快,但是特定于Jupyter笔记本;第二种方法是一种更广泛的方法,可以在自己喜欢的IDE中使用PySpark。

配置PySpark Driver使用Jupyter Notebook

请按以下步骤配置和启动Spark及Jupyter Notebook。

1)启动Spark集群:

$ cd ~/bigdata/spark-3.1.2
$ ./sbin/start-all.sh

2)指定驱动程序(driver)使用Jupyter Notebook。在终端窗口中,执行如下命令:

$ export PYSPARK_DRIVER_PYTHON="jupyter" 
$ export PYSPARK_DRIVER_PYTHON_OPTS="notebook --no-browser --ip=0.0.0.0" 

注意,如果你是以root账户在进行操作,则还需要加上“--allow-root”参数,将上述第二行命令修改如下:

$ export PYSPARK_DRIVER_PYTHON_OPTS="notebook --allow-root --no-browser --ip=0.0.0.0"  

3)使用cd命令进入到notebook文档存放的目录位置,然后启动pyspark shell。在终端窗口中,执行如下命令:

$ mkdir pyspark_demos
$ cd pyspark_demos

$ pyspark --master spark://xueai8:7077

如下图所示:

注意,不要关闭此窗口,保持服务一直处于运行状态。

4)在Windows下,通过浏览器访问Jupyter。到Windows下,打开浏览器,粘贴上一步复制的URL,回车访问,打开notebook页面。如下图所示:

5)编写PySpark代码。新建一个notebook,输入以下代码执行:

6)查看Spark Web UI。另打开一个浏览器窗口,访问http://xueai8:8080。如下图所示:

7)查看正在执行的Spark作业的Web UI。另打开一个浏览器窗口,访问http://xueai8:4040,可以看到正在执行和已经执行完成的作业情况。如下图所示:

使用findSpark包

在Jupyter笔记本中使用PySpark还有另一种方法是,使用findSpark包使Spark上下文在代码中可用。

findSpark包不是特定于Jupyter笔记本的,我们也可以在自己喜欢的IDE中使用这个技巧。

1)首先安装findSpark包:

$ sudo /opt/anaconda3/bin/pip install findspark

2)然后在终端输入jupyter notebook即可:

$ jupyter notebook --no-browser --ip=0.0.0.0

3)在代码中初始化一下即可:

import findspark
findspark.init()

然后正常的PySpark编码即可。

4)新建一个Python 3程序文件,执行如下代码:

from pyspark.sql import SparkSession

# 创建SparkSession实例,这是PySpark程序入口
spark = SparkSession.builder.master("spark://xueai8:7077").appName("pyspark_demo").getOrCreate()

# 查看Spark版本号
spark.version

# 构造一个RDD
rdd = spark.sparkContext.parallelize(range(10))
rdd.collect()

# 查看RDD的分区数
rdd.getNumPartitions()