Spark⼤数据分析与实战:RDD编程初级实践Spark⼤数据分析与实战:RDD编程
初级实践
Spark⼤数据分析与实战:RDD编程初级实践
⼀、安装Hadoop和Spark
具体的安装过程在我以前的博客⾥⾯有,⼤家可以通过以下链接进⼊操作:
** 提⽰:如果IDEA未构建Spark项⽬,可以转接到以下的博客: **
⼆、启动Hadoop与Spark
查看3个节点的进程
master slave1  slave2
Spark shell命令界⾯与端⼝页⾯
三、spark-shell交互式编程
请到教程官⽹的“下载专区”的“数据集”中下载,该数据集包含了某⼤学计算机系的成绩,数据格式如下所⽰: Tom,DataBase,80 Tom,Algorithm,50 Tom,DataStructure,60 Jim,DataBase,90
Jim,Algorithm,60 Jim,DataStructure,80 …… 请根据给定的实验数据,在spark-shell中通过编程来计算以下内容:** 如果不到数据可以从这下载:数据集链接:提取码:z49l **
(1)该系总共有多少学⽣;
shell命令:
val lines = sc.textFile("file:///opt/")
lines.map(row=>row.split(",")(0)).distinct().count
运⾏截图:
(2)该系共开设来多少门课程;
shell命令:
lines.map(row=>row.split(",")(1)).distinct().count
运⾏截图:
(3)Tom同学的总成绩平均分是多少;
shell命令:
lines.filter(row=>row.split(",")(0)=="Tom").map(row=>(row.split(",")(0),row.split(",")(2).toInt))    .mapValues(x=>(x,1))
.reduceByKey((x,y) => (x._1+y._1,x._2 + y._2))
.mapValues(x => (x._1 / x._2))
.collect()
运⾏截图:
(4)求每名同学的选修的课程门数;shell命令:
lines.map(row=>(row.split(",")(0),1))
.reduceByKey((x,y)=>x+y)
.collect
hadoop与spark的区别与联系
运⾏截图:
(5)该系DataBase课程共有多少⼈选修;shell命令:
lines.filter(row=>row.split(",")(1)=="DataBase").count
运⾏截图:
(6)各门课程的平均分是多少;
shell命令:
lines.map(row=>(row.split(",")(1),row.split(",")(2).toInt))
.mapValues(x=>(x,1))
.reduceByKey((x,y) => (x._1+y._1,x._2 + y._2))
.mapValues(x => (x._1 / x._2))
.collect()
运⾏截图:
(7)使⽤累加器计算共有多少⼈选了DataBase这门课。shell命令:
val accum = sc.longAccumulator("My Accumulator")
lines.filter(row=>row.split(",")(1)=="DataBase")
.map(row=>(row.split(",")(1),1))
.values
.foreach(x => accum.add(x))
accum.value
运⾏截图:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。