一.SPark基本介绍
1.Spark是什么?
1.1 定义
Apache Spark是用于大数据处理的统一分析引擎;
1.2 Spark与MapReduce对比
MapReduce的主要缺点:
①MapReduce是基于进程进行数据处理,进程相对与线程来说,创造和销毁的过程比较耗费资源,并且速度比较慢;
②MapReduce在运行的时候,中间有大量的磁盘IO过程,也就是磁盘数据到内存,内存到磁盘的读写过程;
③MapReduce只提供了非常低级的编程API,如果需要实现复杂的程序,就需要大量的代码;
Spark相对MapReduce的优点:
①Spark是基于线程来执行任务;
②引入了新的数据结构RDD(弹性分布式数据集),可以让Spark程序主要基于内存运行,内存的读写数据速度相对磁盘快很多;
③Spark提供了非常丰富的API,可以轻松的实现功能开发;
1.3 进程和线程的对比
线程的创建和销毁,比线程更加的迅速,也更节省资源;
进程很难共享内存中的数据,而同一个进程下的线程可以共享内存数据;
2. Spark的发展
2014年Spark称为顶级项目,2016年Spark2.0发布,2019年Spark3.0发布;
3. Spark的特点
①速度快:提供了一个全新的数据结构RDD(弹性分布式数据集),可以主要基于内存运行Spark程序,当内存不足时,可以放到磁盘上.整个流程是基于有向无环图(DAG)执行方案.Task线程完成计算任务执行;
②易用性:支持多种语言开发(Python,SQL,Java,Scala),降低了上手难度;
③通用性:在Spark基础上,Spark还提供了Spark SQL,Spark Streaming,MLlib及GraphX在内的多个工具库,我们可以在一个应用中无缝使用这些工具库;
④兼容性:可以在任何地方运行;
支持第三方工具接入
存储工具:hdfs,kafka,hbase
资源调度:yarn,Kubernetes(K8s容器),standalone(Spark自带)
高可用:zookeeper
支持多种操作系统:Windows,Linux,Mac
4. Spark框架模块
Spark Core API:实现了Spark的基本功能,包含RDD,任务调度,内存管理,错误回复,与存储系统交互等模块.数据结构RDD
Spark SQL:我们使用SQL处理结构化数据.数据结构:Dataset/DataFrame=RDD+Schema;
Structured Streaming:基于Spark SQL进行流式/实时的处理组件,主要处理结构化数据
Streaming(Spark Streaming):提供的对实时数据进行流式计算的组件,底层依然是离线计算,只不过时间粒度很小,攒批。
MLlib:提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同过滤等。
GraphX:Spark中用于图计算的API,性能良好,拥有丰富的功能和运算符,能在海量数据上自如地运行复杂的图算法。
二.Spark入门案例
1.需求描述
读取文本文件,文件内容是一行一行的文本,每行文本含有多个单词,单词间使用空格分隔。统计文本中每个单词出现的总次数。WordCount词频统计。
文本内容如下:
hello hello spark
hello heima spark
2.代码编写
from pyspark import SparkConf, SparkContext
import os
# 绑定指定的Python解释器
os.environ['SPARK_HOME'] = '/export/server/spark'
os.environ['PYSPARK_PYTHON'] = '/root/anaconda3/bin/python3'
os.environ['PYSPARK_DRIVER_PYTHON'] = '/root/anaconda3/bin/python3'
# 创建main函数
if __name__ == '__main__':
print("Spark入门案例: WordCount词频统计")
# 1- 创建SparkContext对象
"""
setAppName:设置PySpark程序运行时的名称
setMaster:设置PySpark程序运行时的集群模式
"""
conf = SparkConf()\
.setAppName('spark_wordcount_demo')\
.setMaster('local[*]')
sc = SparkContext(conf=conf)
# 2- 数据输入
init_rdd = sc.textFile("file:///export/data/gz16_pyspark/01_spark_core/data/content.txt")
# 3- 数据处理
# 文本内容切分
flatmap_rdd = init_rdd.flatMap(lambda line: line.split(" "))
# 数据格式转换
map_rdd = flatmap_rdd.map(lambda word: (word,1))
reduceByKey底层运行过程分析:
1- 该算子同时具备分组和聚合的功能。而且是先对数据按照key进行分组,对相同key的value会形成得到List列表。再对分组后的value列表进行聚合。
2- 分组和聚合功能不能分割,也就是一个整体
result = map_rdd.reduceByKey(lambda agg,curr: agg+curr)
# 4- 数据输出
"""
collect():用来收集数据,返回值类型是List列表
"""
print(result.collect())
# 5- 释放资源
sc.stop()
猜你喜欢
- 17天前(从“见世面”到“内在需要”:在海南,追问旅行的意义)从“见世面”到“内在需要”:在海南,追问旅行的意义
- 17天前(四川推进世界重要旅游目的地建设工作)四川推进世界重要旅游目的地建设
- 17天前(瑞虎7plus2021款)重塑10万级SUV价值标杆,全新一代瑞虎7PLUS冠军版给你惊喜
- 17天前(罗马尼亚的匈牙利族自治)江苏赴匈牙利、罗马尼亚开展文旅交流推广活动
- 17天前(2025年“文化和自然遗产日”广东主会场活动举办)2025年“文化和自然遗产日”广东主会场活动举办
- 17天前(“清透会呼吸”轻松拿捏春日出游氛围感)“清透会呼吸”轻松拿捏春日出游氛围感
- 17天前(札幌小樽市)2024年暑期飞往北海道避暑吧!札幌小樽city walk路线推荐
- 17天前(上海迪士尼 夏天)酷爽夏日,奇妙相伴!来上海迪士尼度假区清凉入夏
- 17天前(美诺酒店集团旗下臻选品牌m collection)美诺酒店集团启动盛橡品牌战略焕新 开启全球扩张新篇章
- 17天前(辽宁新增6个国家4a级旅游景区有哪些)辽宁新增6个国家4A级旅游景区
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章