大三寒假生活7

今天你完成实验四前两个实验。但是!!!在跟eclipse的scala插件做斗争的时候,把hadoop的插件给搞没了,按着林子雨老师的教程走了一遍还是不行,不知不觉又搞了一下午,还是没解决。明天把实验四完成,做一些实验五,希望明天可以把eclipse的问题解决。

1.spark-shell 交互式编程

请到本教程官网的“下载专区”的“数据集”中下载 chapter5-data1.txt,该数据集包含

了某大学计算机系的成绩,数据格式如下所示:

Tom,DataBase,80

Tom,Algorithm,50

Tom,DataStructure,60

Jim,DataBase,90

Jim,Algorithm,60

Jim,DataStructure,80

……

请根据给定的实验数据,在 spark-shell 中通过编程来计算以下内容:

(1)该系总共有多少学生;

val lines = sc.textFile("file:///usr/local/hadoop/Data01.txt")
val par = lines.map(row=>row.split(",")(0))
val distinct_par = par.distinct() //去重操作
distinct_par.count //取得总数

(2)该系共开设来多少门课程;

val lines = sc.textFile("file:///usr/local/hadoop/Data01.txt")
val par = lines.map(row=>row.split(",")(1))
val distinct_par = par.distinct()
distinct_par.count

(3)Tom 同学的总成绩平均分是多少;

val lines = sc.textFile("file:///usr/local/hadoop/Data01.txt")
val pare = lines.filter(row=>row.split(",")(0)=="Tom")
pare.foreach(println)
pare.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()
//res9: Array[(String, Int)] = Array((Tom,30))

(4)求每名同学的选修的课程门数;

val lines = sc.textFile("file:///usr/local/hadoop/Data01.txt")
val pare = lines.map(row=>(row.split(",")(0),row.split(",")(1)))
pare.mapValues(x => (x,1)).reduceByKey((x,y) => (" ",x._2 + y._2)).mapValues(x =>
x._2).foreach(println)

(5)该系 DataBase 课程共有多少人选修;

val lines = sc.textFile("file:///usr/local/spark/sparksqldata/Data01.txt")
val pare = lines.filter(row=>row.split(",")(1)=="DataBase")
pare.count
res1: Long = 126

(6)各门课程的平均分是多少;

val lines = sc.textFile("file:///usr/local/spark/sparksqldata/Data01.txt")
val pare = lines.map(row=>(row.split(",")(1),row.split(",")(2).toInt))
pare.mapValues(x=>(x,1)).reduceByKey((x,y) => (x._1+y._1,x._2 + y._2)).mapValues(x => (x._1 / x._2)).collect()
res0: Array[(String, Int)] = Array((Python,57), (OperatingSystem,54), (CLanguage,50),
(Software,50), (Algorithm,48), (DataStructure,47), (DataBase,50), (ComputerNetwork,51))

(7)使用累加器计算共有多少人选了 DataBase 这门课。

val lines = sc.textFile("file:///usr/local/spark/sparksqldata/Data01.txt")
val pare = lines.filter(row=>row.split(",")(1)=="DataBase").map(row=>(row.split(",")(1),1))
val accum = sc.longAccumulator("My Accumulator")
pare.values.foreach(x => accum.add(x))
accum.value

2.编写独立应用程序实现数据去重

对于两个输入文件 A 和 B,编写 Spark 独立应用程序,对两个文件进行合并,并剔除其

中重复的内容,得到一个新文件 C。下面是输入文件和输出文件的一个样例,供参考。

输入文件 A 的样例如下:

20170101 x

20170102 y

20170103 x

20170104 y

20170105 z

20170106 z

输入文件 B 的样例如下:

20170101 y

20170102 y

20170103 x

20170104 z

20170105 y

根据输入的文件 A 和 B 合并得到的输出文件 C 的样例如下:

20170101 x

20170101 y

20170102 y

20170103 x

20170104 y

20170104 z

20170105 y

20170105 z

20170106 z

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.HashPartitioner
object RemDup {
 def main(args: Array[String]) {
 val conf = new SparkConf().setAppName("RemDup")
 val sc = new SparkContext(conf)
 val dataFile = "file:///home/charles/data"
 val data = sc.textFile(dataFile,2)
 val res = data.filter(_.trim().length>0).map(line=>(line.trim,"")).partitionBy(new
HashPartitioner(1)).groupByKey().sortByKey().keys
 res.saveAsTextFile("result")
 } }

原文地址:https://www.cnblogs.com/quyangzhangsiyuan/p/12257509.html

时间: 2024-10-12 09:45:17

大三寒假生活7的相关文章

大三寒假生活4

感觉今天也没整出什么大的进展,在学习eclipse编写spark程序过程中,虚拟机中因为eclipse版本号的问题安装不上spark和scala插件,鼓捣了半天也没有进展,在虚拟机中下载对应的版本因为网速过于慢最终也放弃了.最终从windows中下载了对应的eclipse版本,通过ftp传到了虚拟机中.在下载的过程中,打算通过windows中的eclipse远程连接虚拟机,但在安装插件的过程中报出了错误,搜了半天也没解决,明天继续解决. 在上述过程下载等过程中,学习了scala语言的一些知识.尽

大三寒假生活3

今天完成了spark实验二,花费的时间太多,没由大到预期的计划.另外打包过程中下载时候遇到链接打不开404是不影响下载的,完成打包的学习. 下边是今天的实验. 2, 模拟图形绘制 对于一个图形绘制程序,用下面的层次对各种实体进行抽象.定义一个 Drawable 的特质,其包括一个 draw 方法,默认实现为输出对象的字符串表示.定义一个 Point 类表示点,其混入了 Drawable 特质,并包含一个 shift 方法,用于移动点.所有图形实体的抽象类为Shape,其构造函数包括一个 Poin

大三寒假生活5

今天继续学习了scala的相关知识. 经过一下午的时间,把windows中eclipse的maven和scala插件成功安装上了,但是Linux中的eclipse却安装不上,经过查询,初步判断是eclipse的版本太低,导致maven插件安装失败.于是对Linux中的eclipse进行了更新,但一下午过去了还没有更新完,明天继续搞. eclipse如果不是scala ide for eclipse需要安装maven插件和scala插件 跟着林子雨老师的教程做的,却发现maven插件安装不上,经过

大三寒假生活13

今天完成了实验五第三问,实验六也进行了一点.明天继续进行实验六. 编程实现利用 DataFrame 读写 MySQL 的数据 (1) 在 MySQL 数据库中新建数据库 sparktest,再建表 employee,包含下列两行数据: 表 1 employee 表原有数据 (2) 配置Spark通过JDBC连接数据库MySQL,编程实现利用DataFrame插入下列数据到MySQL, 最后打印出 age 的最大值和 age 的总和. 表 2 employee 表新增数据 import java.

大三寒假生活指导

1.FTP在主机和虚拟机之间传文件. 这里需要注意的是,Linux系统对文件访问权限有着严格的规定,如果目录和文件的访问权限没有授权给某个用户,那么,该用户是无法访问这些目录和文件的.所以,当使用FileZilla连接Linux虚拟机时,如果采用用户名hadoop连接,那么,就只能把文件上传到Ubuntu系统中hadoop用户的主目录,也就是“/home/hadoop”目录,是无法对其他目录进行操作的,企图把文件传输到其他目录下就会失败.如果要顺利传输到其他目录,就必须登录Ubuntu系统,使用

大三寒假生活20

今天完成了信访的可视化.安装上了pycharm.也遇到了很多的问题. 1.在ubuntu下开放3306端口,并对外开放,实现从本地连接ubuntu中的mysql. 原文地址:https://blog.csdn.net/freezingxu/article/details/77088506 2.pycharm的破解方法 原文地址:https://blog.csdn.net/gpf1320253667/article/details/95871234 原文地址:https://www.cnblogs

大三寒假03

python安装完成. pc安装配置完成. 原文地址:https://www.cnblogs.com/gonT-iL-evoL-I/p/12232337.html

懵懂、充实、忙碌、我走完了大三

大三下学期的我,一直在实习,趁着期末考试,请了3个星期的假回来复习.顺便整理下我大学三年的经历. 明天就是部落新上任的日子,也是部落这学期交流会的最后一次,看了那么多大三的反思,还有求职经验,想想,我也应该来反思下我的大三. 大一: 大一那时候刚进来什么都不懂,暑假选专业的时候,是进了一个同乡会咨询,在里面遇到了一个同乡会的师兄,然后问了好多关于如何去选专业,选学校的问题. 当时也可以报广工,广商,只不过是文科专业,不喜欢也就罢了,.现在想想,大学其实就是经过一场高考,在青春的时刻,遇到一群人,

生活随笔-我大三了

毕业那年,我们答应老师,到大学来不颓废,还和高中时那样认真.大一那年,我们拎着行李来到一个陌生的城市上学.那时候稚嫩,没什么想法,学习还等着老师来督促,结果坏了自己.大二那年,开始有些着急,开始觉得未来很迷漫,害怕自己和一些学长一样毕不了业,开始认真学习,开始拿奖学金.大二的暑假,出去实习了,发现自己走错了路,学IT的没有技术,书读得再好也没有用.今年我大三了,不想兼职,不想玩社团,甚至不想谈恋爱,只想提高自己的技术水平,能进一家自己想进的公司.现在我做着技术大牛大一干的事情,开始认真学习前端技