Spark独到见解--2总技术栈见解之SparkCore

来源:互联网 发布:淘宝双11 销售额 编辑:程序博客网 时间:2024/05/21 19:46

  1) RDD

     1) 概念

          RDD(Resilient Distributed Dateset),弹性分布式数据集。

      2) RDD的五大特性:

          1.   RDD是由一系列的partition组成的。

          2.   函数是作用在每一个partition(split)上的。

          3.   RDD之间有一些列的依赖关系。

          4.   分区器是作用在K,V格式的RDD上。

          5.   RDD提供一系列最佳的计算位置。

   2)  RDD理解图:

   

    *注意:

         textFile方法底层封装的是读取MR读取文件的方式,读取文件之前先split,默认split大小是一个block大小。

         RDD实际上不存储数据,这里方便理解,暂时理解为存储数据。

     *什么是K,V格式的RDD?

        如果RDD里面存储的数据都是二元组对象,那么这个RDD我们就叫做K,V格式的RDD。

     *哪里体现RDD的弹性(容错)?

       partition数量,大小没有限制,体现了RDD的弹性。

       RDD之间依赖关系,可以基于上一个RDD重新计算出RDD。

     *哪里体现RDD的分布式?

       RDD是由Partition组成,partition是分布在不同节点上的。

       RDD提供计算最佳位置,体现了数据本地化。体现了大数据中“计算移动数据不移动”的理念。

  3)Spark任务执行原理




       以上图中有四个机器节点,Driver和Worker是启动在节点上的进程,运行在JVM中的进程。

      Ø  Driver与集群节点之间有频繁的通信。

      Ø  Driver负责任务(tasks)的分发和结果的回收。任务的调度。如果task的计算结果非常大就不要回收了。会造成oom。

      Ø  Worker是Standalone资源调度框架里面资源管理的从节点。也是JVM进程。

      Ø  Master是Standalone资源调度框架里面资源管理的主节点。也是JVM进程。

  4)Spark代码流程

         1 .  创建SparkConf对象

             Ø  可以设置Applicationname。

             Ø  可以设置运行模式及资源需求。

         2.   创建SparkContext对象

         3.   基于Spark的上下文创建一个RDD,对RDD进行处理。

         4.   应用程序中要有Action类算子来触发Transformation类算子执行。

               关闭Spark上下文对象SparkContext。
  5 ) Transformations转换算子

       

        1.概念:

         Transformations类算子是一类算子(函数)叫做转换算子,如map,flatMap,reduceByKey等。Transformations算子是延迟执行,也叫懒加载执行。

         Transformation类算子:

Ø  filter

过滤符合条件的记录数,true保留,false过滤掉。

 

Ø  map

将一个RDD中的每个数据项,通过map中的函数映射变为一个新的元素

特点:输入一条,输出一条数据。

 

Ø  flatMap

先map后flat。与map类似,每个输入项可以映射为0到多个输出项。

 

Ø  sample

随机抽样算子,根据传进去的小数按比例进行又放回或者无放回的抽样。

 

Ø  reduceByKey

将相同的Key根据相应的逻辑进行处理。

Ø  sortByKey/sortBy

作用在K,V格式的RDD上,对key进行升序或者降序排序。

6 )   Action行动算子

     

Ø  count

返回数据集中的元素数。会在结果计算完成后回收到Driver端。

 

Ø  take(n)

返回一个包含数据集前n个元素的集合。

 

Ø  first

first=take(1),返回数据集中的第一个元素。

 

Ø  foreach

循环遍历数据集中的每个元素,运行相应的逻辑。

 

Ø  collect

将计算结果回收到Driver端。

 

ü  思考:一千万条数据量的文件,过滤掉出现次数多的记录,并且其余记录按照出现次数降序排序。



                                           ............................未完待续........................


原创粉丝点击