华为项目 Spark相关
一、Spark简介
1、什么是Spark
发源于AMPLab实验室的分布式内存计算平台,它克服了MapReduce在迭代式计算和交互式计算方面的不足。
相比于MapReduce,Spark能充分利用内存资源提高计算效率。
2、Spark计算框架
Driver程序启动很多workers,然后workers在(分布式)文件系统中读取数据后转化为RDD(弹性分布式数据集),最后对RDD在内存中进行缓存和计算
(2)优化执行计划
4、Spark Api语言支持
(1)Scala
(2)Java
(3)Python
5、怎么运行Spark
Local本地模式、Spark独立集群、Mesos、Yarn-Standalone、Yarn-Client
二、编程模型
1、RDD(弹性分布式数据集)是什么
只读的、分块的数据记录集合
可以通过读取来不同存储类型的数据进行创建、或者通过RDD操作生成(map、filter操作等)
使用者只能控制RDD的缓存或者分区方式
RDD的数据可以有多种类型存储方式(可(序列化)存在内存或硬盘中)
2、RDD 存储类型
RDD可以设置不同类型存储方式,只存硬盘、只存内存等。
3、RDD操作
Transformation:根据已有RDD创建新的RDD数据集build

JavaSparkContext sc = new JavaSparkContext("local","SparkTest");
接受2个参数:
第一个参数表示运行方式(local、yarn-client、yarn-standalone等)
第二个参数表示应用名字

执行结果:对list1数据集每行数据用","进行切分


执行结果:对list1数据集每行数据用","进行切分
(3)filter
filter对每行数据执行过滤操作,返回true则保留,返回false则过滤该行数据
执行结果:过滤list1数据集中包含‘a’字符的行
(4)union
union操作对两个RDD数据进行合并。与SQL中的union一样


执行结果:对pair1RDD数据集按key进行group by
(6)reduceByKey
reduceByKey对pair中的key先进行group by操作,然后根据函数对聚合数据后的数据操作
执行结果:先group by操作后进行concat
(7)mapValues
mapValues操作对pair中的value部分执行函数里面的操作
执行结果:对pair1RDD中value部分加上test字符串
(8)join
join与sql中join含义一致,将两个RDD中key一致的进行join连接操作

执行结果:对pair1RDD与pair2RDD按key进行join
(9)cogroup
cogroup对两个RDD数据集按key进行group by,并对每个RDD的value进行单独group by
执行结果:对pair1RDD与pair2RDD按key进行cogroup
6、RDD数据如何输出

count:统计输出数据行数
collect:输出所有输出数据
save:保存输出数据至外部存储
7、WordCount实例
执行结果:
8、广播变量& 累加器
Broadcast variables(广播变量)
Accumulators(累加器)
三、调度机制
1、DAG Scheduler
为每个job分割stage,同时会决定最佳路径,并且DAG Scheduler会记录哪个RDD或者stage的数据被checkpoint,从而找到最优调度方案 (transformations是延迟执行的原因)
2、DAG Scheduler优化
单个Stage内Pipeline执行
3、窄依赖& 宽依赖
窄依赖:每个子分区只依赖有限数目的父分区
宽依赖:每个子分区只依赖所有的父分区
4、Stage
调度器会在产生宽依赖的地方形成一个stage,同一个stage内的RDD操作会流式执行,不会发生数据迁移。
rdd join操作属于宽依赖,从spark产生的日志可以看出需要分3个stage执行
rdd flatMap、Map操作属于窄依赖,从spark产生的日志可以看出需要分1个stage执行
5、Shuffle
每个RDD都可以选择Partitioner进行shuffle操作
shuffle需要在node之间移动数据,会影响spark执行效率,应该尽量避免RDD操作中发生shuffle。
相关推荐
"spark相关jar包"的描述可能指的是Spark框架及其组件所需要的依赖库。这些jar包通常包括Spark自身的API、Hadoop相关库(因为Spark通常在Hadoop生态系统中运行)、Scala库(Spark是用Scala编写的,因此需要Scala的...
Spark的官方文档是学习Spark的重要资源,它详细解释了Spark的所有组件,包括Spark Core、Spark SQL、Spark Streaming、MLlib(机器学习库)和GraphX(图处理)。文档中包含了API的使用示例、配置指南和最佳实践,...
将提供的压缩包解压后,可以设置环境变量,配置Spark和Kafka的相关路径。然后,通过Scala、Java或Python编写Spark程序,调用Kafka的连接器实现数据的读写。在本地模式或集群模式下运行Spark应用,即可实现大数据的...
这个"spark相关学习资料.zip"压缩包很可能包含了一系列关于Spark的学习资源,如文档、教程、示例代码等,旨在帮助用户快速理解和掌握Spark的核心概念和技术。 Spark的核心特性包括: 1. **内存计算**:Spark引入了...
这个压缩包"Spark相关资料.zip"包含了一系列深入探讨Spark内部机制的文档,这些文档可以帮助我们理解Spark的工作原理和核心特性。 首先,"SparkInternal1-Overview.pdf"应该是Spark的总体概述,它可能会介绍Spark的...
标题中的"SPARK相关资料"涵盖了Spark的官方API以及四篇关于Spark的学术论文,这些资源对于深入理解和应用Spark技术至关重要。Spark官方API是开发人员编写Spark程序的基础,它包括了RDD(弹性分布式数据集)、...
《Spark相关资料三册.zip》这个压缩包包含的三册书籍分别是《Hadoop Spark生态系统操作与实战指南》、《Spark大数据处理_原理算法与实例》以及《Spark快速大数据分析》。这些资料深入浅出地介绍了Apache Spark这一...
### Spark相关面试知识点详解 #### 一、Spark基础概念及原理 **1.1 Spark简介** Apache Spark是一款专为大规模数据处理而设计的快速通用计算引擎。它支持多种编程语言如Scala、Java、Python等,并提供了高效的...
1、Spark大数据处理:技术、应用与性能优化(全).pdf 2、Spark高级数据分析.pdf 3、spark官方文档中文版.pdf 4、Spark架构原作者讲解(中文).pdf 5、Spark快速数据处理(前三章).pdf 6、Spark快速数据处理.pdf 7、...
Hadoop_Spark相关面试问题总结 - Hadoop知识库.pdf Hadoop_Spark相关面试问题总结 - Hadoop知识库.pdf Hadoop_Spark相关面试问题总结 - Hadoop知识库.pdf
### Spark相关知识点精选 #### 一、Spark简介与应用场景 **1.1 Spark概述** - **定义**: Apache Spark 是一种高性能、通用的集群计算平台,主要用于处理大规模数据集。 - **适用场景**: 包括批处理、迭代算法、...
本资料是集合20篇知网被引最高的基于spark的大数据论文,包括大数据Spark技术研究_刘峰波、大数据下基于Spark的电商实时推荐系统的设计与实现_岑凯伦、基于Spark的Apriori算法的改进_牛海玲、基于Spark的大数据混合...
1. **配置环境**:设置Spark相关的环境变量,如SPARK_HOME、HADOOP_CONF_DIR等。 2. **创建SparkContext**:Spark应用程序的入口点是SparkContext,它连接到Spark集群并管理所有资源。 3. **加载数据**:使用Spark的...
An Architecture for Fast and General Data Processing on Large Clusters.pdf Discretized Streams An ...Spark SQL Relational Data Processing in Spark.pdf spark.pdf 大型集群上的快速和通用数据处理架构.pdf
Spark大数据相关书籍,Spark大数据相关书籍,Spark大数据相关书籍,Spark大数据相关书籍
spark 并行加载 greenplum 数据,为正确运行,需引入 spark 相关包和 greenplum 驱动。 <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core --> <groupId>org.apache.spark ...
2. **配置Spark环境变量**:在master节点的`.bash_profile`中添加Spark相关环境变量,如SPARK_HOME,然后在所有节点上使其生效。 3. **配置slaves文件**:将`slaves.template`重命名为`slaves`,并在其中列出所有从...
2. 添加Maven依赖,引入Spark相关的库。 3. 编写WordCount示例代码并运行,验证开发环境。 #### 总结 本文详细介绍了如何在本地环境中搭建Spark开发环境,包括JDK、Scala、Spark以及构建工具Maven的安装配置。通过...
**Spark核心知识** Spark是一种快速、通用且可扩展的大数据处理框架,由Apache软件基金会维护。它是基于内存计算,旨在提高大数据处理的速度和效率。Spark的核心组件包括Spark Core、Spark SQL、Spark Streaming、...