4 SparkCore

久未见 提交于 2020-08-17 17:33:35

SparkCore

0 主要内容

SparkCore的核心内容主要讲的就是SparkCore的三大数据结构

  • 1 RDD:分布式数据集
  • 2 广播变量:分布式只读共享变量
  • 3 累加器:分布式只写共享变量

 

1 RDD

1.1 RDD定义

  • RDDResilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据(逻辑计算)抽象。代码中是一个抽象类,它代表一个不可变可分区、里面的元素可并行计算的集合
  • RDD作为一个集合,内部存储的并不是数据,而是计算的逻辑

定义中几个方面的理解:

  • 1 数据集:存储的是计算的逻辑;
  • 2 分布式:数据的来源 & 计算 & 数据的存储;
  • 3 弹性(灵活、可变性):
    • 血缘(依赖关系):Spark可以通过特殊的处理方案简化依赖关系;
    • 计算:Spark的计算是基于内存的,所以性能特别高,同时可以和磁盘灵活切换;
    • 分区:Spark在创建默认分区后,可以通过指定的算子来改变分区数量;
    • 容错:Spark在执行计算时,如果发生了错误,需要进行容错重试处理;
  • 4 Spark中的数量:
    • Executor:可以通过提交应用的参数进行设定;
    • partition:
      • 默认情况下,读取文件采用的是Hadoop的切片规则,如果读取内存中的数据,可以根据特定的算法进行设定,可以通过其他算子进行改变;
      • 在多个阶段的场合,下一个阶段的分区数量取决于上一个阶段最后RDD的分区数;但是可以在相应的算子中进行修改;
    • stage:
      • 1(ResultStage) + shuffle依赖的数量(ShuffleMapStage);
      • 划分阶段的目的是为了任务执行的等待,因为shuffle的过程需要落盘;
    • Task:原则上一个分区就是一个任务。但是实际应用中,可以动态调整;

1.2 RDD创建

三种方式:

  • 从集合(内存)中创建RDD;
  • 从外部存储创建;
  • 从其他RDD创建;

1.3 RDD的属性

  • 分区;
  • 依赖关系;
  • 分区器;
  • 优先位置;
    • 如果数据是存在内存中,这样有些节点上就会有数据,有的节点上没有数据,有数据的节点就可以称之为优先位置;但是如果数据是存放在数据库中,对每个节点而言都要从数据库去获取数据,这时就没有优先位置的概念了。
  • 计算函数;

1.4 使用(RDD转换和行动算子)

转换算子:

  • 单Value类型;
  • 双Value类型;
  • K - V类型;

行动算子(runJob)

 

2 广播变量(优化策略)

广播变量(优化策略):分布式共享只读数据

 

3 累加器

累加器:分布式共享只写数据(需要返回数据的)

 

 

 

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!