`

Spark相关

 
阅读更多

华为项目 Spark相关

 

一、Spark简介

  1、什么是Spark

    发源于AMPLab实验室的分布式内存计算平台,它克服了MapReduce在迭代式计算和交互式计算方面的不足。

    相比于MapReduce,Spark能充分利用内存资源提高计算效率。

  2、Spark计算框架

    Driver程序启动很多workers,然后workers在(分布式)文件系统中读取数据后转化为RDD(弹性分布式数据集),最后对RDD在内存中进行缓存和计算

  

        

  3、为什么Spark计算速度快
    (1)内存计算

    (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

    Action:在RDD数据集运行计算后,返回一个值或者将结果写入外部存储
    
 
 4、RDD如何创建
    
   首先创建JavaSparkContext对象实例sc

        JavaSparkContext  sc = new JavaSparkContext("local","SparkTest");

    接受2个参数:

      第一个参数表示运行方式(local、yarn-client、yarn-standalone等)

      第二个参数表示应用名字
 
  直接从集合转化 sc.parallelize(List(1,2,3,4,5,6,7,8,9,10))
  从HDFS文件转化 sc.textFile("hdfs://")
  从本地文件转化 sc.textFile("file:/")
  下面例子中list2就是根据data2List生成的一个RDD
    
  
  根据文件或者集合生成RDD后,接着就可以通过RDD的Transformation操作来完成对数据的各种转化操作
  常用的map、flatMap、filter操作都是对单元素的操作
  常用的groupByKey、join都是对(key、value)类型元素操作
 
  5、RDD操作例子Java Api
  (1)map
    map操作对数据集每行数据执行函数里面操作
    list1数据集("a,b,c,d,e"),("1,2,3,4,5"); 
      

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

      
   (2)flatMap
      flatMap相比于map操作,它对每行数据操作后会生成多行数据,而map操作只会生成一行。
      

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

       

    (3)filter

     filter对每行数据执行过滤操作,返回true则保留,返回false则过滤该行数据

       

       执行结果:过滤list1数据集中包含‘a’字符的行

       

    (4)union

      union操作对两个RDD数据进行合并。与SQL中的union一样

      list2数据集("11,22,33,44,55"),("aa,bb,cc,dd,ee"); 
        
      执行结果:合并list1与list2数据集
        
    (5)groupByKey
      groupByKey对pair中的key进行group by操作
      pair1RDD数据集("a,1"),("b,2"),("a,3"),("b,4")

        

      执行结果:对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连接操作

      pair2RDD数据集("a,11"),("b,22"),("a,13"),("c,4")
      

      执行结果:对pair1RDD与pair2RDD按key进行join

      

    (9)cogroup

      cogroup对两个RDD数据集按key进行group by,并对每个RDD的value进行单独group by

       

       执行结果:对pair1RDD与pair2RDD按key进行cogroup

        

  6、RDD数据如何输出

    使用RDD的Transformation对数据操作后,需要再使用Action操作才能将结果数据输出
    可以分别使用count、collect、save等操作来输出或统计RDD结果
  
  7、RDD Action实例
    
    执行结果:

      count:统计输出数据行数

      

      collect:输出所有输出数据

      

             save:保存输出数据至外部存储

      

  7、WordCount实例                                                                  

  

     执行结果:

    

 

  8、广播变量& 累加器

    Broadcast variables(广播变量) 

      广播变量,类似于hadoop中的distribute cache,将同一份数据分发至每台机器。

    Accumulators(累加器)

      类似于MapReduce中的counter,用于计数
 
 

三、调度机制

  1、DAG Scheduler

    为每个job分割stage,同时会决定最佳路径,并且DAG Scheduler会记录哪个RDD或者stage的数据被checkpoint,从而找到最优调度方案                                         (transformations是延迟执行的原因)

    

  2、DAG Scheduler优化

    单个Stage内Pipeline执行

    基于分区选择合适的join算法最小化shuffle
    重用已经cache过的数据

  3、窄依赖& 宽依赖

    窄依赖:每个子分区只依赖有限数目的父分区 

    宽依赖:每个子分区只依赖所有的父分区

      

  4、Stage

    调度器会在产生宽依赖的地方形成一个stage,同一个stage内的RDD操作会流式执行,不会发生数据迁移。

    

    rdd join操作属于宽依赖,从spark产生的日志可以看出需要分3个stage执行

      

        rdd flatMap、Map操作属于窄依赖,从spark产生的日志可以看出需要分1个stage执行

      

  5、Shuffle

    每个RDD都可以选择Partitioner进行shuffle操作

    任何在两个RDD上的shuffle操作,将选择其中一个RDD的Partitioner作为标准。如果两个RDD都没有设置Partitioner的话,就使用默认的HashPartitioner

    shuffle需要在node之间移动数据,会影响spark执行效率,应该尽量避免RDD操作中发生shuffle。

  

分享到:
评论

相关推荐

    spark相关jar包

    "spark相关jar包"的描述可能指的是Spark框架及其组件所需要的依赖库。这些jar包通常包括Spark自身的API、Hadoop相关库(因为Spark通常在Hadoop生态系统中运行)、Scala库(Spark是用Scala编写的,因此需要Scala的...

    spark 相关文档资料

    Spark的官方文档是学习Spark的重要资源,它详细解释了Spark的所有组件,包括Spark Core、Spark SQL、Spark Streaming、MLlib(机器学习库)和GraphX(图处理)。文档中包含了API的使用示例、配置指南和最佳实践,...

    大数据spark相关包.rar

    将提供的压缩包解压后,可以设置环境变量,配置Spark和Kafka的相关路径。然后,通过Scala、Java或Python编写Spark程序,调用Kafka的连接器实现数据的读写。在本地模式或集群模式下运行Spark应用,即可实现大数据的...

    spark相关学习资料.zip

    这个"spark相关学习资料.zip"压缩包很可能包含了一系列关于Spark的学习资源,如文档、教程、示例代码等,旨在帮助用户快速理解和掌握Spark的核心概念和技术。 Spark的核心特性包括: 1. **内存计算**:Spark引入了...

    Spark相关资料.zip

    这个压缩包"Spark相关资料.zip"包含了一系列深入探讨Spark内部机制的文档,这些文档可以帮助我们理解Spark的工作原理和核心特性。 首先,"SparkInternal1-Overview.pdf"应该是Spark的总体概述,它可能会介绍Spark的...

    SPARK相关资料

    标题中的"SPARK相关资料"涵盖了Spark的官方API以及四篇关于Spark的学术论文,这些资源对于深入理解和应用Spark技术至关重要。Spark官方API是开发人员编写Spark程序的基础,它包括了RDD(弹性分布式数据集)、...

    Spark相关资料三册.zip

    《Spark相关资料三册.zip》这个压缩包包含的三册书籍分别是《Hadoop Spark生态系统操作与实战指南》、《Spark大数据处理_原理算法与实例》以及《Spark快速大数据分析》。这些资料深入浅出地介绍了Apache Spark这一...

    面试大数据岗位 spark相关问题汇总

    ### Spark相关面试知识点详解 #### 一、Spark基础概念及原理 **1.1 Spark简介** Apache Spark是一款专为大规模数据处理而设计的快速通用计算引擎。它支持多种编程语言如Scala、Java、Python等,并提供了高效的...

    Spark相关电子书二

    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 Hadoop_Spark相关面试问题总结 - Hadoop知识库.pdf

    Spark相关知识点精选

    ### Spark相关知识点精选 #### 一、Spark简介与应用场景 **1.1 Spark概述** - **定义**: Apache Spark 是一种高性能、通用的集群计算平台,主要用于处理大规模数据集。 - **适用场景**: 包括批处理、迭代算法、...

    基于spark的大数据论文资料

    本资料是集合20篇知网被引最高的基于spark的大数据论文,包括大数据Spark技术研究_刘峰波、大数据下基于Spark的电商实时推荐系统的设计与实现_岑凯伦、基于Spark的Apriori算法的改进_牛海玲、基于Spark的大数据混合...

    spark_jar包

    1. **配置环境**:设置Spark相关的环境变量,如SPARK_HOME、HADOOP_CONF_DIR等。 2. **创建SparkContext**:Spark应用程序的入口点是SparkContext,它连接到Spark集群并管理所有资源。 3. **加载数据**:使用Spark的...

    Spark相关电子书一

    1、databricks-spark-reference-applications.pdf 2、Fast Data Processing with Spark(PACKT,2ed,2015).pdf 3、Fast Data Processing with Spark.pdf 4、Machine Learning with Spark.pdf 5、Machine Learning with...

    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大数据相关书籍

    spark 并行加载 greenplum 数据

    spark 并行加载 greenplum 数据,为正确运行,需引入 spark 相关包和 greenplum 驱动。 <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core --> <groupId>org.apache.spark ...

    Spark实验:Standalone模式安装部署(带答案)1

    2. **配置Spark环境变量**:在master节点的`.bash_profile`中添加Spark相关环境变量,如SPARK_HOME,然后在所有节点上使其生效。 3. **配置slaves文件**:将`slaves.template`重命名为`slaves`,并在其中列出所有从...

    spark安装

    2. 添加Maven依赖,引入Spark相关的库。 3. 编写WordCount示例代码并运行,验证开发环境。 #### 总结 本文详细介绍了如何在本地环境中搭建Spark开发环境,包括JDK、Scala、Spark以及构建工具Maven的安装配置。通过...

Global site tag (gtag.js) - Google Analytics