spark02-内存数据分区分配原理
Posted 小朋友,你是否有很多问号?
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spark02-内存数据分区分配原理相关的知识,希望对你有一定的参考价值。
代码:
val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("wordcount")
val sc=new SparkContext(conf)
//[1] [2,3] [4,5]
val rdd: RDD[Int] = sc.makeRDD(List(1,2,3,4,5),3)
//将处理的数据保存分区文件
rdd.saveAsTextFile("output2")
sc.stop()
通过sc.makeRDD(List(1,2,3,4,5),3) 得到3个文件分别存储数据为[1] [2,3] [4,5]
点击makeRDD方法
positions(array.length, numSlices) 有两个参数一个是数组的长度,一个是分区的数量
对应代码为positions(5,3)
0 until numSilces 的结果为0 1 2,进行迭代 i的取值分别去 0 1 2
当i=0时,start=0,end=1*5/3=1 返回(0,1)
当i=1是,start=1*5/3=1,end=2*5/3=3 返回 (1,3)
当i=2时,start=3 ,end=3*5/3=5 返回(3,5)
得到元祖之后进行操作array.slice(start, end).toSeq
i=0 => (0,1)=> slice(0,1) => 0 索引 => 1
i=1 => (1,3)=> slice(1,3) => 1,2 索引 => 2,3
i=2 => (3,5)=> slice(3,5) => 3,4 索引 => 4,5
以上是关于spark02-内存数据分区分配原理的主要内容,如果未能解决你的问题,请参考以下文章