要学会 剥落旧痂 然后 循此新生
—— 24.11.8
一、Spark是什么
定义:
Apache Spark 是用于大规模数据处理的统一分析引擎
简单来说,Spark是一款分布式的计算框架,用于调度成百上千的服务器集群,计算TB、PB乃至EB级别的海量数据
二、PySpark
Spark对Python语言的支持,重点体现在Python第三方库:PySpark之上
PySpark是由Spark官方开发的Python语言第三方库
Python开发者可以使用pip程序快速的安装PySpark并像其他三方库那样直接使用
PySpark既可以作为库处理,也可以将程序提交到Spark集群环境中,调度大规模集群进行执行
三、掌握PySpark库的安装
同其它Python第三方库一样,PySpark同样可以使用pip程序进行安装,也可以在pycharm内直接安装
命令行终端输入:
pip install pyspark
若网速较慢,推荐使用清华园国内代理镜像:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspark
四、掌握PySpark执行环境入口对象的构建
想要使用PySpark完成数据处理,首先需要:构建一个执行环境入口对象(拿到类SparkContext的类对象)
PySpark的执行环境入口对象是:类 SparkContext 的类对象
"""
演示获取PySpark的执行环境入口对象:SparkContext
并通过SparkContext对象获取当前PySpark的版本
"""
# 导入 PySpark 相关包
from pyspark import SparkConf, SparkContext
# 创建 SparkConf 实例对象 , 该对象用于配置 Spark 任务
# setMaster("local[*]") 设置运行模式:表示在单机模式下 本机运行
# setAppName("hello_spark") 任务名称是给 Spark 程序起一个名字
sparkConf = SparkConf().setMaster("local[*]").setAppName("hello_spark")
# 基于SparkConf类对象创建SparkContext类对象
sparkContext = SparkContext(conf=sparkConf)
# 打印 PySpark 版本号
print(sparkContext.version)
# 停止 PySpark 程序 (停止SparkContext对象的运行)
sparkContext.stop()
五、理解PySpark的编程模型
PySpark编程,主要分为以下三大步骤:
1.数据输入
通过SparkContext类对象的成员方法,完成数据的读取操作,读取后得到RDD类对象
2.数据处理计算
通过RDD类对象的成员方法,完成各种数据计算的需求
3.数据输出
将处理完成后的RDD对象,调用各种成员方法完成写出文件、转换为list等操作
4.PySpark的编程模型
SparkContext类对象,是PySpark编程中一切功能的入口
六、数据输入
1.RDD对象
如图可示,PySpark支持多种数据的输入,在输入完成后,都会得到一个:RDD类的对象
RDD全称为:弹性分布式数据集(Resilient Distributed Datasets)
PySpark针对数据的处理,都是以RDD对象作为载体,即:
① 数据存储在RDD内
② 各类数据的计算方法,也都是RDD的成员方法
③ RDD的数据计算方法,返回值依旧是RDD对象
2.Python数据容器转RDD对象
PySpark支持通过SparkContext对象的parallelize成员方法,将:
list(列表)、tuple(元组)、set(集合)、dict(字典)、str(字符串)转换为PySpark的RDD对象
注意:
① 字符串会被拆分出一个个的字符,存入RDD对象
② 字典仅有key会被存入RDD对象
"""
#通过PySpark代码加载数据,即数据输入
"""
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
sc = SparkContext(conf=conf)
# 通过parallelize方法将Python对象加载到Spark内,成为RDD对象
# 列表
rdd1 = sc.parallelize([1, 2, 3, 4, 5])
# 元组
rdd2 = sc.parallelize((1, 2, 3, 4, 5))
# 字符串
rdd3 = sc.parallelize("abcdefg")
# 集合
rdd4 = sc.parallelize({1, 2, 3, 4, 5})
# 字典
rdd5 = sc.parallelize({"key1": "value1", "key2": "value2"})
# 如果要查看RDD里面有什么内容,需要用collect()方法
print(rdd1.collect())
print(rdd2.collect())
print(rdd3.collect())
print(rdd4.collect())
print(rdd5.collect())
sc.stop()
3.读取文件转RDD对象
"""
#通过PySpark代码加载文档数据,从文档中中读取数据输入
"""
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
sc = SparkContext(conf=conf)
rdd = sc.textFile("D:/2LFE\Desktop\Hello.txt")
print(rdd.collect())
sc.stop()
代码中的报红警告是由于在 Windows 系统上运行 PySpark 时缺少 winutils.exe
和 Hadoop 环境变量设置导致的
由于我们只学习pyspark模块,不需要配置Hadoop环境信息
七、总结
1.RDD对象是什么?为什么要使用它?
RDD对象称之为分布式弹性数据集,是PySpark中数据计算的载体,它可以:
① 提供数据存储
② 提供数据计算的各类方法
③ 数据计算的方法,返回值依旧是RDD(RDD选代计算)
后续对数据进行各类计算,都是基于RDD对象进行
2.如何输入数据到Spark(即得到RDD对象)
① 通过SparkContext的parallelize成员方法,将Python数据容器转换为RDD对象
② 通过SparkContext的textFile成员方法,读取文本文件得到RDD对象