ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spark基本概念

2022-01-21 18:35:13  阅读:135  来源: 互联网

标签:创建 分区 RDD 计算 Executor Spark 基本概念


Spark核心组件

Driver

  • 将用户程序转化为作业(job)
  • 在Executor之间调度任务(task)
  • 跟踪Executor的执行情况
  • 通过UI展示查询运行情况

 Executor

  • Spark Executor是集群中工作节点(Worker)中的一个JVM进程,负责在 Spark 作业中运行具体任务(Task),任务彼此之间相互独立。
  • 负责运行组成Spark应用的任务,并将结果返回给驱动器进程
  • 它们通过自身的块管理器(Block Manager)为用户程序中要求缓存的 RDD 提供内存式存储。RDD 是直接缓存在Executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

 并行度(Parallelism)

在分布式计算框架中一般都是多个任务同时执行,由于任务分布在不同的计算节点进行计算,所以能够真正地实现多任务并行执行,记住,这里是并行,而不是并发。这里我们将整个集群并行执行任务的数量称之为并行度。

提交流程

 

Spark核心编程

三大数据结构分别是:

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

RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据处理模型。

  • 分区列表

RDD数据结构中存在分区列表,用于执行任务时并行计算,是实现分布式计算的重要属性。

  • 分区计算函数

Spark在计算时,是使用分区函数对每一个分区进行计算

  • RDD之间的依赖关系

RDD是计算模型的封装,当需求中需要将多个计算模型进行组合时,就需要将多个RDD建立依赖关系

  • 分区器(可选)

当数据为KV类型数据时,可以通过设定分区器自定义数据的分区

  • 首选位置(可选)

计算数据时,可以根据计算节点的状态选择不同的节点位置进行计算

 RDD创建

Spark中创建RDD的创建方式可以分为四种:

1)       从集合(内存)中创建RDD

从集合中创建RDD,Spark主要提供了两个方法:parallelize和makeRDD

2)       从外部存储(文件)创建RDD

由外部存储系统的数据集创建RDD包括:本地的文件系统,所有Hadoop支持的数据集,比如HDFS、HBase等。

3)       从其他RDD创建 不常用

主要是通过一个RDD运算完后,再产生新的RDD。详情请参考后续章节

4)       直接创建RDD(new) 不常用

使用new的方式直接构造RDD,一般由Spark框架自身使用。

RDD转换算子

RDD 中的所有转换都是延迟加载的,也就是说,它们并不会直接计算结果。

RDD根据数据处理方式的不同将算子整体上分为Value类型、双Value类型和Key-Value类型

map,filter,flatMap,mapPartitions,mapPartitonsWithIndex,sample,takeSample,union,intersection,distinct,partitionBy,reduceByKey,groupByKey,combinByKey,aggregateByKey,foldByKey,sortByKey,sortBy,join,cogroup,cartesian,pipe,coalesce,repartition,repartitionAndSortWithinPartitons,glom,mapValues,subtract

 RDD行动算子

  • 数据运算类,主要用于触发RDD计算,并得到计算结果返回给Spark程序或Shell界面;
  • 数据存储类,用于触发RDD计算后,将结果保存到外部存储系统中,如HDFS文件系统或数据库

aggregate、collect、count、first、foreach、reduce、take、takeOrdered、takeSample、saveAsObjectFile、saveAsTextFile

标签:创建,分区,RDD,计算,Executor,Spark,基本概念
来源: https://blog.csdn.net/fwk19840301/article/details/122626918

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有