`

spark内核揭秘-10-RDD源码分析

阅读更多

RDD的核心方法:

首先看一下getPartitions方法的源码:

getPartitions返回的是一系列partitions的集合,即一个Partition类型的数组

我们就想进入HadoopRDD实现:

1、getJobConf():用来获取job Configuration,获取配置方式有clone和非clone方式,但是clone方式 是not thread-safe,默认是禁止的,非clone方式可以从cache中获取,如cache中没有那就创建一个新的,然后再放到cache中

2、进入 getInputFormcat(jobConf)方法:

3、进入inputFormat.getSplits(jobConf, minPartitions)方法:

进入FileInputFormcat类的getSplits方法:

5、进入HadoopPartition:

 

而getDependencies表达式RDD之间的依赖关系,如下所示:

getDependencies返回的是依赖关系的一个Seq集合,里面的Dependency数组中的下划线是类型的PlaceHolder

我们进入ShuffledRDD类中的getDependencies方法:

我们进入ShuffleDependency类:

每个RDD都会具有计算的函数,如下所示:

我们进入HadoopMapPartitionsWithSplitRDD的 compute方法:

Compute方法是针对RDD的每个Partition进行计算的,其TaskContext参数的源码如下:

getPreferredLocations是寻找Partition的首选位置:

我们进入NewHadoopRDD的getPreferredLocations:

 

其实RDD还有一个可选的分区策略:

Partitioner的源码如下:

可以看出默认使用的是HashPartitioner,要注意key为Array的情况;

spark.default.parallelism必须要设置,否则会根据partitions数据来传输RDD,这样也会很容易出现OOM

1
3
分享到:
评论

相关推荐

    Spark学习--RDD编码

    RDD:弹性分布式数据集(ResilientDistributed Dataset),是Spark对数据的核心抽象。RDD其实是分布式的元素集合。当Spark对数据操作和转换时,会自动将RDD中的数据分发到集群,并将操作并行化执行。 Spark中的RDD是一...

    spark-textFile构建RDD的分区及compute计算策略

    spark-textFile构建RDD的分区及compute计算策略

    spark-rdd-APi

    内容根据spark rdd.scala和ParRDDFunctions.scala源码中rdd顺序整理,包含rdd功能解释。对熟悉spark rdd很有用

    spark-kafka-rdd:使Kafka成为Spark平台数据源的scala库

    Spark-Kafka-RDD Spark-Kafka-RDD是一个scala库,让Kafka成为Spark平台的数据源。 请注意,Spark-Kafka-RDD 从 Kafka 主题和分区中获取给定的偏移范围作为单个 RDD ( KafkaRDD ) 返回给 Spark 驱动程序,而不是生成 ...

    spark3.0入门到精通

    │ 10-[重点]-Spark代码开发-入门案例.mp4 ├─Spark-day02 │ 02-[掌握]-RDD的创建.mp4 │ 04-[掌握]-RDD的分区操作.mp4 │ 05-[掌握]-RDD的重分区操作.mp4 │ 06-[掌握]-RDD的聚合操作.mp4 │ 07-[面试题]-...

    精通Spark内核

    精通Spark内核:此阶段聚焦于Spark内核的设计、实现和核心源码解析,对内核中的实现架构、运行原理、性能调优和核心源码各个击破: 1, 通过源码精通Spark内核实现和任务调度; 2,精通RDD、DAGScheduler、Task...

    spark内核揭秘spark j讲解

    spark的内核解读,学习spark要学会看源码,spark 的core ,spark rdd,spark sql 等详细内核讲解,详细介绍内容内容使用要求。

    spark-project-20190620.zip

    20190620自学spark,实现用java调用spark rdd api,主要侧重于lambda方式调用,本源码下载后直接可运行,因使用maven,只用前需先安装maven并保持网络正常。初次使用比较耗时,需要下载依赖包

    spark-RDD的特性介绍及源码阅读必备基础

    spark-RDD的特性介绍及源码阅读必备基础

    Spark学习---统计文件单词出现次数

    上一节我们简单介绍了RDD中转化和执行操作的用法,本节将通过一个具体的示例来加深对RDD的认识。 一.需求 统计本地文件中单词出现次数 二.操作流程 1.读取外部文件创建JavaRDD; 2.通过flatMap转化操作切分字符...

    Spark技术内幕-深入解析Spark内核架构设计与实现原理(带书签目录)

    spark是一种快速、通用、可扩展的大数据分析引擎。Spark 核心的概念是 Resilient Distributed Dataset (RDD):一个可并行操作的有容错机制的数据集合。有 2 种方式创建 RDDs:第一种是在你的驱动程序中并行化一个...

    hbase-rdd:Spark RDD从HBase读取,写入和删除

    hbase-rdd:Spark RDD从HBase读取,写入和删除

    过去三十年-RCT-DID-RDD-LE-ML-DSGE等方法的“高光时刻”路线图.docx

    过去三十年-RCT-DID-RDD-LE-ML-DSGE等方法的"高光时刻"路线图全文共6页,当前为第1页。过去三十年-RCT-DID-RDD-LE-ML-DSGE等方法的"高光时刻"路线图全文共6页,当前为第1页。过去三十年,RCT,DID,RDD,LE,ML,DSGE等...

    spark学习-RDD的实验

    spark学习-RDD的实验

    2015 Spark技术峰会-Spark SQL结构化数据分析-连城

    Databrciks工程师,Spark Committer,Spark SQL主要开发者之一的连城详细解读了“Spark SQL结构化数据分析”。他介绍了Spark1.3版本中的很多新特性。重点介绍了DataFrame。其从SchemaRDD演变而来,提供了更加高层...

    sparkRDD函数大全

    spark rdd函数大全。spark rdd操作为core操作,虽然后续版本主要以dataset来操作,但是rdd操作也是不可忽略的一部分。

    Spark-2.3.1源码解读

    Spark-2.3.1源码解读。 Spark Core源码阅读 Spark Context 阅读要点 Spark的缓存,变量,shuffle数据等清理及机制 Spark-submit关于参数及部署模式的部分解析 GroupByKey VS ReduceByKey OrderedRDDFunctions...

    spark-rdd-sample1

    spark-rdd-sample1

    spark-cassandra-connector:DataStax Spark Cassandra连接器

    该库使您可以将Cassandra表公开为Spark RDD和数据集/数据框架,将Spark RDD和数据集/数据框架写入Cassandra表,并在Spark应用程序中执行任意CQL查询。 与Apache Cassandra 2.1或更高版本兼容(请参见下表) 与...

    大数据spark学习之rdd概述

    RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。在 Spark 中,对数据的所有操作不外乎创建 RDD、转化已有RDD 以及...

Global site tag (gtag.js) - Google Analytics