2020年寒假学习进度第七天

今天主要学习了spark实验四的内容,实验四主要为RDD编程,本实验的重点为两个编程题

1.编写独立应用程序实现数据去重对于两个输入文件 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 dataFile1 = "file:///usr/local/spark/mycode/remdup/text1.txt,file:///usr/local/spark/mycode/remdup/text2.txt"
 val data = sc.textFile(dataFile1,2)
 val res = data.filter(_.trim().length>0).map(line=>(line.trim,"")).partitionBy(new
HashPartitioner(1)).groupByKey().sortByKey().keys
 res.saveAsTextFile("result")
 } }

  

2.编写独立应用程序实现求平均值问题

每个输入文件表示班级学生某个学科的成绩,每行内容由两个字段组成,第一个是学生名字,第二个是学生的成绩;编写 Spark 独立应用程序求出所有学生的平均成绩,并输出到

一个新文件中。下面是输入文件和输出文件的一个样例,供参考。

Algorithm 成绩:

小明 92

小红 87

小新 82

小丽 90

Database 成绩:

小明 95

小红 81

小新 89

小丽 85

Python 成绩:

小明 82

小红 83

小新 94

小丽 91

平均成绩如下:

(小红,83.67)

(小新,88.33)

(小明,89.67)

(小丽,88.67)

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.HashPartitioner
object AvgScore {
 def main(args: Array[String]) {
 val conf = new SparkConf().setAppName("AvgScore")
 val sc = new SparkContext(conf)
 val dataFile = "file:///usr/local/spark/mycode/avgscore/text.txt"
 val data = sc.textFile(dataFile,3)
val res = data.filter(_.trim().length>0).map(line=>(line.split(" ")(0).trim(),line.split
(" ")(1).trim().toInt)).partitionBy(new HashPartitioner(1)).groupByKey().map(x => {
 var n = 0
 var sum = 0.0
 for(i <- x._2){
 sum = sum + i
 n = n +1
 }
 val avg = sum/n
 val format = f"$avg%1.2f".toDouble
 (x._1,format)
 })
 res.saveAsTextFile("result1")
 } }

  

总结:做本实验遇到了一些问题,当看到教程中的代码后,刚开始是很蒙的,因为不知道从哪个路径读取的文件,也不知道该如何读取,后来看了网上的一个实验成功的博客,明白了读取两个文件应该把路径都写出来,还有一个问题就是不知道执行成功命令后输出文件在哪,按照教程中的提示输出结果在本地文件系统中,但是我发现并没有,找了好久都没有这个输出文件,最后在hdfs中找到结果,做这个实验的时候一定注意,输出结果在hdfs的根目录下,打开eclipse即可查看。

原文地址:https://www.cnblogs.com/ljm-zsy/p/12271051.html

时间: 2024-11-05 18:47:32

2020年寒假学习进度第七天的相关文章

2020年寒假学习进度(一)

由于下学期就要进行毕业设计答辩,打算这个寒假在家先继续巩固知识和学习新的技术要点,然后着力进行毕业设计的开发. 今天主要复习了一些关于javaweb的内容,总结如下: (1)WEB,也就是网页的意思,它用于表示Internet主机上供外界访问的资源.常用动态web资源开发技术:JSP/Servlet.ASP.PHP等 本人主要学习java运用于web开发的重要技术在Java中,动态web资源开发技术统称为Javaweb. (2)servlet/jsp: 这是SUN公司(SUN现在已经被Oracl

2020年寒假学习进度第十天

今天主要学习了实验 7 Spark 机器学习库 MLlib 编程实践, 主要代码: import org.apache.spark.ml.feature.PCA import org.apache.spark.sql.Row import org.apache.spark.ml.linalg.{Vector,Vectors} import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator import org.apa

2020年寒假学习进度第二天

今天主要研究了spark实验二的第一部分的Scala编写,看完代码后发现需要在REPL模式下运行,经过查证发现需要安装scala脚本,所以尝试在虚拟机中安装scala,成功后使用给的代码尝试运行,但是出错,提示没有找到类的定义,经过查证,发现是代码中缺少类得定义.改正后可以正常运行. import io.StdIn._ object Test { def main(args: Array[String]){ var Sn:Float = 0 var n:Float=1 println("plea

2020年寒假学习进度第九天

今天主要解决了实验五未解决的问题,前天在做实验五spark连接mysql时出现找不到jar包的问题,看了网上的讲解,调整了一下路径,有人说jar包要放在同名的一个文件夹里,实际上jar包应该直接放在spark安装目录的jars目录下就可,这样就可以连接上. 3. 编程实现利用 DataFrame 读写 MySQL 的数据 (1) 在 MySQL 数据库中新建数据库 sparktest,再建表 employee,包含下列两行数据: 表 1 employee 表原有数据 (2) 配置Spark通过J

2020年寒假学习进度第十五天

原文地址:https://www.cnblogs.com/ljm-zsy/p/12312935.html

寒假学习进度02

日期:2020.01.15 博客期:124 星期三 嗯,把这几天学习进度汇总一下: 1.CSV文件.XML文件.JSON文件的处理整合 这一部分详细的让我明天把博客整理出来,你们就能看到了,不过这一部分代码,借鉴了好多其他博主的,我在此声明一下:数据的文件读写部分(除CSV文件外,其余两个)不是本博主原创,剩下的这三者之间的转换和前面构造好的BeanGroup类型的相互转换是自己写的.嗯,具体看下一篇博客吧! 2.数据爬取详细信息 嗯,爬取的话,现在是只能爬取一页上的所有信息,没能做到页面跳转继

2020寒假学习进度报告2

今日完成内容:学习了scala中的语法,主要知识点包括:变量的定义,数值类型,运算符,流程控制,for循环,while循环, do ... while循环,(不建议使用while和do...while,因为函数引入了外部变量),函数尤其是递归,之前学习其他语言时强调尽量少用递归操作,但是在scala中对于递归做了底层优化,所以scala中会用到大量的递归操作. 明日学习任务:学习scala中函数的使用,面向对象编程和函数式编程 原文地址:https://www.cnblogs.com/mawan

2020寒假学习进度报告6

1. 计算级数 请用脚本的方式编程计算并输出下列级数的前 n 项之和 Sn,直到 Sn 刚好大于或等于 q 为止,其中 q 为大于 0 的整数,其值通过键盘输入. 例如,若 q 的值为 50.0,则输出应为:Sn=50.416695.请将源文件保存为 exercise2-1.scala,在 REPL模式下测试运行,测试样例:q=1时,Sn=2:q=30时,Sn=30.891459: q=50 时,Sn=50.416695. 1 var n: Float = 1 2 var Sn: Float =

寒假学习进度三——安卓的一些基本组件

今天主要学习了安卓一些简单的组件,前两天都是按照案例(demo)敲的,对其中用到的组件不是特别的了解. TextView(文本框组件):主要用来显示文字的一些信息.通过修改TextView的属性可以改变文字的颜色,大小,位置.这个组件较比较简单,容易上手.这里就不过多叙述了. Button(按钮):是程序用于和用户进行交互的一个重要控件.Android Studio会对Button中的所有英文字母自动进行大写转换,你可以使用将textAllCaps属性改为false来禁用这一默认特性. Edit