欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Spark 的 python 编程环境

程序员文章站 2022-03-28 21:27:52
Spark编程环境 Spark 可以独立安装使用,也可以和 Hadoop 一起安装使用。在安装 Spark 之前,首先确保你的电脑上已经安装了 或者更高的版本。 Spark 安装 访问 "Spark 下载页面" ,并选择最新版本的 Spark 直接下载,当前的最新版本是 2.4.2 。下载好之后需要 ......

spark编程环境

spark 可以独立安装使用,也可以和 hadoop 一起安装使用。在安装 spark 之前,首先确保你的电脑上已经安装了 java 8 或者更高的版本。

spark 安装

访问spark 下载页面,并选择最新版本的 spark 直接下载,当前的最新版本是 2.4.2 。下载好之后需要解压缩到安装文件夹中,看自己的喜好,我们是安装到了 /opt 目录下。

tar -xzf spark-2.4.2-bin-hadoop2.7.tgz
mv spark-2.4.2-bin-hadoop2.7 /opt/spark-2.4.2

为了能在终端中直接打开 spark 的 shell 环境,需要配置相应的环境变量。这里我由于使用的是 zsh,所以需要配置环境到 ~/.zshrc 中。

没有安装 zsh 的可以配置到 ~/.bashrc

# 编辑 zshrc 文件
sudo gedit ~/.zshrc

# 增加以下内容:
export spark_home=/opt/spark-2.4.2
export path=$spark_home/bin:$path
export pythonpath=$spark_home/python:$spark_home/python/lib/py4j-0.10.4-src.zip:$pythonpath

配置完成后,在 shell 中输入 spark-shell 或者 pyspark 就可以进入到 spark 的交互式编程环境中,前者是进入 scala 交互式环境,后者是进入 python 交互式环境。

配置 python 编程环境

在这里介绍两种编程环境,jupytervisual studio code。前者方便进行交互式编程,后者方便最终的集成式开发。

pyspark in jupyter

首先介绍如何在 jupyter 中使用 spark,注意这里 jupyter notebook 和 jupyter lab 是通用的方式,此处以 jupyter lab 中的配置为例:

在 jupyter lab 中使用 pyspark 存在两种方法:

  • 配置 pyspark 的启动器为 jupyter lab,运行 pyspark 将自动打开一个 jupyter lab;
  • 打开一个正常的 jupyter lab,并使用 findspark 包来加载 pyspark。

第一个选项更快,但特定于jupyter笔记本,第二个选项是一个更广泛的方法,使pyspark在你任意喜欢的ide中都可用,强烈推荐第二种方法。

方法一:配置 pyspark 启动器

更新 pyspark 启动器的环境变量,继续在 ~/.zshrc 文件中增加以下内容:

export pyspark_driver_python=jupyter
export pyspark_driver_python_opts='lab'

如果要使用 jupyter notebook,则将第二个参数的值改为 notebook

刷新环境变量或者重启机器,并执行 pyspark 命令,将直接打开一个启动了 spark 的 jupyter lab。

pyspark

Spark 的 python 编程环境

方法二:使用 findspark 包

在 jupyter lab 中使用 pyspark 还有另一种更通用的方法:使用 findspark 包在代码中提供 spark 上下文环境。

findspark 包不是特定于 jupyter lab 的,您也可以其它的 ide 中使用该方法,因此这种方法更通用,也更推荐该方法。

首先安装 findspark:

pip install findspark

之后打开一个 jupyter lab,我们在进行 spark 编程时,需要先导入 findspark 包,示例如下:

# 导入 findspark 并初始化
import findspark
findspark.init()

from pyspark import sparkconf, sparkcontext
import random
# 配置 spark
conf = sparkconf().setmaster("local[*]").setappname("pi")
# 利用上下文启动 spark
sc = sparkcontext(conf=conf)
num_samples = 100000000
def inside(p):     
    x, y = random.random(), random.random()
    return x*x + y*y < 1
count = sc.parallelize(range(0, num_samples)).filter(inside).count()
pi = 4 * count / num_samples
print(pi)
sc.stop()

运行示例

Spark 的 python 编程环境


pyspark in vscode

visual studio code 作为一个优秀的编辑器,对于 python 开发十分便利。这里首先推荐个人常用的一些插件:

  • python:必装的插件,提供了python语言支持;
  • code runner:支持运行文件中的某些片段;

此外,在 vscode 上使用 spark 就不需要使用 findspark 包了,可以直接进行编程:

from pyspark import sparkcontext, sparkconf
conf = sparkconf().setmaster("local[*]").setappname("test")
sc = sparkcontext(conf=conf)
logfile = "file:///opt/spark-2.4.2/readme.md"
logdata = sc.textfile(logfile, 2).cache()
numas = logdata.filter(lambda line: 'a' in line).count()
numbs = logdata.filter(lambda line: 'b' in line).count()
print("lines with a: {0}, lines with b:{1}".format(numas, numbs))