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
相关推荐
RDD:弹性分布式数据集(ResilientDistributed Dataset),是Spark对数据的核心抽象。RDD其实是分布式的元素集合。当Spark对数据操作和转换时,会自动将RDD中的数据分发到集群,并将操作并行化执行。 Spark中的RDD是一...
spark-textFile构建RDD的分区及compute计算策略
内容根据spark rdd.scala和ParRDDFunctions.scala源码中rdd顺序整理,包含rdd功能解释。对熟悉spark rdd很有用
Spark-Kafka-RDD Spark-Kafka-RDD是一个scala库,让Kafka成为Spark平台的数据源。 请注意,Spark-Kafka-RDD 从 Kafka 主题和分区中获取给定的偏移范围作为单个 RDD ( KafkaRDD ) 返回给 Spark 驱动程序,而不是生成 ...
│ 10-[重点]-Spark代码开发-入门案例.mp4 ├─Spark-day02 │ 02-[掌握]-RDD的创建.mp4 │ 04-[掌握]-RDD的分区操作.mp4 │ 05-[掌握]-RDD的重分区操作.mp4 │ 06-[掌握]-RDD的聚合操作.mp4 │ 07-[面试题]-...
精通Spark内核:此阶段聚焦于Spark内核的设计、实现和核心源码解析,对内核中的实现架构、运行原理、性能调优和核心源码各个击破: 1, 通过源码精通Spark内核实现和任务调度; 2,精通RDD、DAGScheduler、Task...
spark的内核解读,学习spark要学会看源码,spark 的core ,spark rdd,spark sql 等详细内核讲解,详细介绍内容内容使用要求。
20190620自学spark,实现用java调用spark rdd api,主要侧重于lambda方式调用,本源码下载后直接可运行,因使用maven,只用前需先安装maven并保持网络正常。初次使用比较耗时,需要下载依赖包
spark-RDD的特性介绍及源码阅读必备基础
上一节我们简单介绍了RDD中转化和执行操作的用法,本节将通过一个具体的示例来加深对RDD的认识。 一.需求 统计本地文件中单词出现次数 二.操作流程 1.读取外部文件创建JavaRDD; 2.通过flatMap转化操作切分字符...
spark是一种快速、通用、可扩展的大数据分析引擎。Spark 核心的概念是 Resilient Distributed Dataset (RDD):一个可并行操作的有容错机制的数据集合。有 2 种方式创建 RDDs:第一种是在你的驱动程序中并行化一个...
hbase-rdd:Spark RDD从HBase读取,写入和删除
过去三十年-RCT-DID-RDD-LE-ML-DSGE等方法的"高光时刻"路线图全文共6页,当前为第1页。过去三十年-RCT-DID-RDD-LE-ML-DSGE等方法的"高光时刻"路线图全文共6页,当前为第1页。过去三十年,RCT,DID,RDD,LE,ML,DSGE等...
spark学习-RDD的实验
Databrciks工程师,Spark Committer,Spark SQL主要开发者之一的连城详细解读了“Spark SQL结构化数据分析”。他介绍了Spark1.3版本中的很多新特性。重点介绍了DataFrame。其从SchemaRDD演变而来,提供了更加高层...
spark rdd函数大全。spark rdd操作为core操作,虽然后续版本主要以dataset来操作,但是rdd操作也是不可忽略的一部分。
Spark-2.3.1源码解读。 Spark Core源码阅读 Spark Context 阅读要点 Spark的缓存,变量,shuffle数据等清理及机制 Spark-submit关于参数及部署模式的部分解析 GroupByKey VS ReduceByKey OrderedRDDFunctions...
spark-rdd-sample1
该库使您可以将Cassandra表公开为Spark RDD和数据集/数据框架,将Spark RDD和数据集/数据框架写入Cassandra表,并在Spark应用程序中执行任意CQL查询。 与Apache Cassandra 2.1或更高版本兼容(请参见下表) 与...
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。在 Spark 中,对数据的所有操作不外乎创建 RDD、转化已有RDD 以及...