首页 > 代码库 > Spark RDD与共享变量简介

Spark RDD与共享变量简介

hadoop有两个东东:HDFS(存储)和MapReduce(计算)。MapReduce计算比较慢,于是Spark(速度是MR的10~100倍)出现了。Spark有两个核心的概念:弹性分布式数据集RDD与共享变量。下面进行一下简单的介绍。

弹性分布式数据集(RDD)获得方式:1并行化驱动程序内的集合; 2从外部数据集加载。

1 并行化驱动程序内的集合code demo

val data = http://www.mamicode.com/Array(1,2,3,4,5,6,7,8,9) >//普通数组

val distData = http://www.mamicode.com/sc.parallelize(data) >//弹性分布式数组

val sum = distData.reduce((a,b) => a+b)   //并行求和

print(sum)   //打印

2 从外部数据集加载 code demo

  val awsFile = sc.textFile("/user/hdfs/aws/2012/total.txt") //获取弹性分布式文件

  val lineNum = awsFile.count()  //获取行数

print(lineNum) //打印

Spark 共享变量分为两种:广播变量(broadcast variables)和累加器变量(accumulators variables)

1广播变量(broadcast variables)获取code demo

val broadcastVal = sc.broadcast(Array(1,2,3,45,6)) //得到broadcast变量

broadcastVal.value //变量取值

2累加器变量(accumulators variables)获取 code demo

val accu = sc.accumulator(0,"firstaccumulator")  //得到accumulators变量

sc.parallelize(Array(1,2,3,45,6)).foreach(x => accu +=x)  //数组求和运算

print(accu.value) //结构打印


Spark RDD与共享变量简介