首页 > 代码库 > 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与共享变量简介