Spark Resilient Distributed Dataset

2023-11-02 09:50

本文主要是介绍Spark Resilient Distributed Dataset,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

RDD(Resilient Distributed Dataset)叫做弹性分布式数据集是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。

1、getPartitions 一组分区的集合

        ·分区数决定Task个数,决定并行度。默认是线程数。个数太多进行并发

2、Compute 计算函数

3、getDependencies RDD依赖其他RDDS的关系

4、[Partitioner]分区器

5、[getPreferredLocation]首选位置

来源:Spark学习之路 (三)Spark之RDD - 扎心了,老铁 - 博客园 

1、RDD的创建

RDD要进行Collect才会进行方法的调用。rdd.collect().foreach(println)

1、从集合(内存)中创建,底层是parallelize

        sc.makeRDD(本地集合,numSlices分区数)

val seq = Seq[int](1,2,3,4)val rdd = sc.makeRDD(seq)

2、从外部存储创建RDD

        sc.textile(Path,分区数)

        sc.wholeTextFiles(Path,分区数)   专门用于读取小文件

                ·读取结果为元组:(文件路径,文件数据)

2、RDD的算子类型

Spark支持两种算子:Transformation、Action

Transformation:转化为另一种RDD,具有lazy特性(延迟加载)。Transformation算子的代码不会真正被执行。只有当我们的程序里面遇到一个action算子的时候,代码才会真正的被执行。

Action:触发代码的运行,我们一段spark代码里面至少需要有一个action算子。

 案例

3、算子类型

1映射:map、mapPartitions

        map(func):串行操作,一条一条数据进行逻辑映射

                rdd.map(_.swap),交换<K,V>

        mapParttions:批处理操作,先将整个分区加载到内存,以分区为单位进行映射。可以对逻辑进行修改

2扁平映射:flatMap(func)

        分词效果.flatMap( _.split(" ") )

                    glom:与

3分区:repatriation、coalesce

        reparttion(num、shuffle-bool):可以增加或减少分区,默认开启shuffle

        coalesce:默认只能减少分区,不开启shuffle(可手动开启)

4无key聚合[Action]:sum、reduce、fold、aggregate

5有key聚合[Transformation]:针对<K,V>对的函数

groupByKey + sum / Reduce 、reduceByKey 、foldByKey 、 aggregateByKey

1和2的区别

groupByKey仅分组,需要额外的聚合函数才能聚合。reduceByKey有预聚合,类似MR的combine功能,可以减少reduce次数。

6 Join:join、leftOuterJoin、rightOuterJoin

RDD1.join(RDD2)

7排序:sortBy、sortByKey

sortBy:(_._按第几个排序,降序bool)   //默认升序

sortByKey:按key排

4、RDD持久化(缓存) 与 chekpoint检查点

RDD.cache 纯内存,会在血缘关系中添加新的依赖,一旦出现问题可以重新读取

RDD.persist 可以选择模式内存、磁盘等

         ·默认是MEMORY_ONLY,推荐使用MEMORY_AND_DISK,防止内存占用过高

RDD.unpersist 释放资源,使用完成记得释放

checkpoint 将数据长久保存在磁盘文件中,一般存在HDFS。会切断血缘关系作为顶级依赖。

为了提高效率在checkpoint前进行cache操作,避免重复的运算。

首先先设置sc.setCheckpointDir路径,后可直接RDD.checkpoint标记

5、RDD IO

三种文件格式

rdd.saveAsTextFile("Path")

rdd.saveAsObjectFile("Path")

rdd.saveAsSequenceFile("Path")


共享变量(广播变量、累加器)

累加器:分布式共享只写变量

        可在Task对变量进行添加改变,执行后返回到Driver端聚合。默认提供longAccumalator和doubleAccumalator、collctAccumalator

广播变量:分布式共享只读变量

Executor是一个JVM,广播变量可以加载到JVM内存中,不同task可以进行使用 

这篇关于Spark Resilient Distributed Dataset的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/329794

相关文章

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering)

Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering) Power Iteration Clustering (PIC) 是一种基于图的聚类算法,用于在大规模数据集上进行高效的社区检测。PIC 算法的核心思想是通过迭代图的幂运算来发现数据中的潜在簇。该算法适用于处理大规模图数据,特别是在社交网络分析、推荐系统和生物信息学等领域具有广泛应用。Spa

HTML5自定义属性对象Dataset

原文转自HTML5自定义属性对象Dataset简介 一、html5 自定义属性介绍 之前翻译的“你必须知道的28个HTML5特征、窍门和技术”一文中对于HTML5中自定义合法属性data-已经做过些介绍,就是在HTML5中我们可以使用data-前缀设置我们需要的自定义属性,来进行一些数据的存放,例如我们要在一个文字按钮上存放相对应的id: <a href="javascript:" d

论文精读-Supervised Raw Video Denoising with a Benchmark Dataset on Dynamic Scenes

论文精读-Supervised Raw Video Denoising with a Benchmark Dataset on Dynamic Scenes 优势 1、构建了一个用于监督原始视频去噪的基准数据集。为了多次捕捉瞬间,我们手动为对象s创建运动。在高ISO模式下捕获每一时刻的噪声帧,并通过对多个噪声帧进行平均得到相应的干净帧。 2、有效的原始视频去噪网络(RViDeNet),通过探

终止distributed tensorflow的ps进程

1.直接终止: $ ps -ef | grep python | grep 文件名 | awk {'print $2'} | xargs kill文件名为当前运行的程序,名称如:distribute.py 2.查找pid,后kill: $ ps -ef | grep python | grep 文件名 | awk {'print $2'}$ kill -9 <pid>

【spark 读写数据】数据源的读写操作

通用的 Load/Save 函数 在最简单的方式下,默认的数据源(parquet 除非另外配置通过spark.sql.sources.default)将会用于所有的操作。 Parquet 是一个列式存储格式的文件,被许多其他数据处理系统所支持。Spark SQL 支持对 Parquet 文件的读写还可以自动的保存源数据的模式 val usersDF = spark.read.load("e

Spark数据介绍

从趋势上看,DataFrame 和 Dataset 更加流行。 示例场景 数据仓库和 BI 工具集成: 如果你需要处理存储在数据仓库中的结构化数据,并且希望与 BI 工具集成,那么 DataFrame 和 Dataset 是首选。 机器学习流水线: 在构建机器学习流水线时,使用 DataFrame 和 Dataset 可以更好地管理数据流,并且可以方便地与 MLlib 集成。 实时数据处理:

Mac搭建华为云平台Hadoop+spark步骤

1、安装终端和文件传输软件 下载、安装、配置 详戳数据平台搭建文件夹 Transmit 用于文件传输 iTerm2    用于终端 2、连接与登录 mac 使用iTerm2快捷登录远程服务器 Mac Transmit连接 (密码不可复制,手动输入) 3、安装jdk 4、修改主机名 Linux系统下如何修改主机名 4、安装配置hadoop

Spark-在集群上运行Spark

Spark-在集群上运行Spark

Spark—数据读取和保存

Spark—数据读取和保存