HadoopRDD 的生成过程解析
来源:互联网 发布:网络大电影审批 编辑:程序博客网 时间:2024/06/05 22:30
Spark经常需要从hdfs读取文件生成RDD,然后进行计算分析。这种从hdfs读取文件生成的RDD就是HadoopRDD。那么HadoopRDD的分区是怎么计算出来的?如果从hdfs读取的文件非常大,如何高效的从hdfs加载文件生成HadoopRDD呢?本篇文章探讨这两个问题。
SparkContext.objectFile方法经常用于从hdfs加载文件,从加载hdfs文件到生成HadoopRDD的函数调用过程为:
SparkContext.objectFile->
SparkContext.sequenceFile->
SparkContext.hadoopFile->
new HadoopRDD
SparkContext.objectFile方法定义如下:
从以上代码可知如果不设置加载的hdfs文件生成的HadoopRDD的分区个数,默认最小分区个数是2SparkContext.objectFile方法的minPartitions参数没有改变,一直传递到HadoopRDD的构造函数
HadoopRDD.getPartitions方法用于创建HadoopRDD的分区。
在本篇文章中,以如下语句加载hdfs文件创建HadoopRDD,创建的HadoopRDD分区个数最小是24个
hdfs上/data/login/1448419800022/目录内的文件情况,如下图所示:
目录下存在12个文件,12个文件总共10974245字节,如果按照24个分区计算,平均一个分区是457260字节
分区的 创建在HadoopRDD.getPartitions方法:
可见总共创建了25个分区,通过上图可得出结论在切分hdfs目录中的文件的时候,对每个文件按照分区平均长度457260进行切分,每个分区的长度不能大于457260.比如说part-00009文件,切分成了3个分区,最后一个分区的长度只有62107字节
下图表示了一个index为1分区的详细信息:
可见里面包含了分区所在的hdfs的文件,以及分区数据在这个文件的起始位置,分区的大小
但是默认情况下,HadoopRDD一个分区最大是128M,假设一个文件大小是1G+10M,但是我设置4个分区,那么在计算分区个数的时候会计算为9个分区,最后一个分区大小为10M。
- HadoopRDD 的生成过程解析
- 从HadoopRDD生成各个阶段的RDD 源码详解
- SparkContext 与 textFile 生成hadoopRdd 源码解读
- spark RDD系列------2.HadoopRDD分区的创建以及计算
- HadoopRDD getPartitions
- FairyGUI加载包生成物体的过程解析
- Linux解析设备树生成设备的过程
- IAR生成文件链接过程解析
- IAR生成文件链接过程解析
- CE的生成过程
- 资源生成的过程
- BootRom的生成过程
- zImage的生成过程
- Image的生成过程
- platform_device的生成过程
- XSL的解析过程
- 解析JSON的过程
- ARP的解析过程
- BlockingQueue的功能和使用
- 51 NOD 1126 求递推序列的第N项(规律)
- 关于广播机制
- Java:jdbc连接数据库插入中文数据乱码问题
- Bootstarp 基础 基本模版
- HadoopRDD 的生成过程解析
- Spark通过mapPartitions方式加载Json文件,提高文件加载速度
- 统一的分布式数据库和文件系统,及利用mysqlfs解决aliyun上做站的存储成本难题
- css媒体查询与导航栏
- SparseCoding(1)_金字塔匹配核函数(The Pyramid Match Kernel)
- openocd 下载程序到32开发板学习笔记
- Android学习之发送及接收广播及本地广播
- hibernate单表操作
- android webView setWebChromeClient and setWebClient