Python学习从0到1 day26 第三阶段 Spark ① 数据输入

要学会 剥落旧痂 然后 循此新生

                                        —— 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对象)

① 通过SparkContextparallelize成员方法,将Python数据容器转换为RDD对象

② 通过SparkContexttextFile成员方法,读取文本文件得到RDD对象

上一篇:时间复杂度和空间复杂度


下一篇:FreeSWITCH Ubuntu 18.04 源码编译