微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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即可查看。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐