hadoop有两个东东:HDFS(存储)和MapReduce(计算)。MapReduce计算比较慢,于是Spark(速度是MR的10~100倍)出现了。Spark有两个核心的概念:弹性分布式数据集RDD与共享变量。下面进行一下简单的介绍。
弹性分布式数据集(RDD)获得方式:1
并行化驱动程序内的集合; 2
从外部数据集加载。
1 并行化驱动程序内的集合code demo
val data = Array(1,2,3,4,5,6,7,8,9)
//普通数组
val distData = 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)
//结构打印