寒假学习第六天

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

对于两个输入文件 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

package my.scala

import org.apache.spark.{SparkConf, SparkContext}

object case2 {

  def main(args: Array[String]): Unit = {

    val conf = new SparkConf().setMaster("local").setAppName("reduce")

    val sc = new SparkContext(conf)

    sc.setLogLevel("ERROR")

    //获取数据

    val two = sc.textFile("hdfs://192.168.85.128:9000/quchong")

    two.filter(_.trim().length>0) //需要有空格。

        .map(line=>(line.trim,""))//全部值当key,(key value,"")

          .groupByKey()//groupByKey,过滤重复的key value ,发送到总机器上汇总

              .sortByKey() //按key value的自然顺序排序

                  .keys.collect().foreach(println) //所有的keys变成数组再输出

    //第二种有风险

    two.filter(_.trim().length>0)

          .map(line=>(line.trim,"1"))

            .distinct()

                .reduceByKey(_+_)

                    .sortByKey()

                        .foreach(println)

    //reduceByKey,在本机suffle后,再发送一个总map,发送到一个总机器上汇总,(汇总要压力小)

    //groupByKey,发送本机所有的map,在一个机器上汇总(汇总压力大)

    //如果数据在不同的机器上,则会出现先重复数据,distinct,reduceBykey,只是在本机上去重,谨慎一点的话,在reduceByKey后面需要加多一个distinct

  }

}

原文地址:https://www.cnblogs.com/lishengming00/p/12275158.html

时间: 2024-11-14 08:03:53

寒假学习第六天的相关文章

python学习第六天 - 列表(数组)

python当中的数组与java,c不太一样,数组相当于一个列表,一个列表中可以有,整型,字符串,浮点型等等. 定义格式如下: >>> list = [123,'小甲鱼',3.14] >>> list [123, '小甲鱼', 3.14] 介绍几种向列表中添加元素的方法 1.append() :向列表中增加新的元素,一次只能添加一个元素,默认添加到列表的末尾 >>> list.append('黑夜') >>> list [123, '

七、Android学习第六天——SQLite与文件下载(转)

(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 七.Android学习第六天——SQLite与文件下载 SQLite SQLite是Android内嵌的一个非常小的关系型数据库. 总结:当我们操作 在学习SQLite当中,遇到两个问题: (一)如果我们在搭建Android环境成功后,在命令行中输入adb后没有反应,可以按一下操作来做: 第一步:将platform-tools的目录加入path环境变量的配置中: 第二步:

寒假学习笔记(1)

2018.2.7 常变量 const const 数据类型 常变量名=初始值: 使用const关键字指定常变量: 定义时必须初始化: 不能再次被赋值: 用const定义与用define定义的区别: 区别1 define是宏定义,程序在预处理阶段将用define定义的内容进行了替换.因此程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存. const定义的常量,在程序运行时在常量表中,系统为它分配内存. 区别2 define定义的常量,预处理时只是直接进行了替换.所以编译时不能

寒假学习笔记(4)

2018.2.11 类中的常成员 关键字const,在类定义中声明数据成员使用关键字限定,声明时不能初始化. 初始化列表,类中的任何函数都不能对常数据成员赋值,包括构造函数.为构造函数添加初始化列表是对常数据成员进行初始化的唯一途径. 定义对象时初始化.定义含常数据成员类的对象时需要初始化,给出常数据成员的初始值. 函数声明:double Getcost() const; 常函数成员只能读类中的数据成员,不能赋值修改. 常函数成员只能调用其它常函数成员. 通过常对象只能调用其常函数成员. 类中的

个人学期总结及寒假学习规划

个人学期总结及寒假学习规划 一:个人学期总结   1大一前期专业学习问题 总结和回顾个人过去的大学学习时光,猛然间发现其实自己在大一对于专业学习方面只能算是一个入门,很多专业知识和技能的掌握都不是很理解和精通,基础性语言虽然都已学习但是总的来说,感觉自己好像都略知一二,但当面对实际现实问题的时候却又不能很好解决,只知其一不知其二. 整个大一的学习和生活中,有初到大学校园的欣喜与不适,有对于未来满心的憧憬与期待,但是在初期的适应和学习过程中,由于个人以及大环境下的那种安逸感,使自己有所放纵,没有很

窦小凤2020寒假学习心得

2020年1-2月寒假学习心得—窦小凤 一.学习成果 赛事准备上,每天坚持做题,完成代码量6000行(其中还包括了很多知识点学习上的代码). 学习python基础,对python有了基本认识,完成代码1500行(但其中基本都是python中的基础语法) 选择性学习了一些用Java语言讲的数据结构与算法. 前期主要是将Java的基础视频重看了一遍(主要是在学校的时候没认真),然后从最基础入门开始做起,到寒假末来看,自身在Java方面跟在大一上学期还是有较大进步,但仍还有很长的路要走. Python

寒假学习记录第六天

统计学生成绩 学生的成绩清单格式如下所示,第一行为表头,各字段意思分别为学号.性别.课程名 1.课程名 2 等,后面每一行代表一个学生的信息,各字段之间用空白符隔开 Id gender Math English Physics 301610 male 80 64 78 301611 female 65 87 58 ... 给定任何一个如上格式的清单(不同清单里课程数量可能不一样),要求尽可能采用函 数式编程,统计出各门课程的平均成绩,最低成绩,和最高成绩:另外还需按男女同学分开, 分别统计各门课

2016年寒假学习收获总结

这个寒假从1月20日到家,1月21日算起,到今天2月12日,刚好23天.像往常一样,假期开始的时候自信满满,定下计划要学习什么什么,但最后多半都放弃了.这次也是,取得的成果比想象得少很多,但至少值得欣慰的是,还是有一些成果的. 一.学习 拿到MBP,安装软件,熟悉Mac OSX系统.为了使用更方便,安装了Parallels Desktop,装了Kali Linux.Windows 10和Windows XP三个虚拟机. 开始学习Python,达到入门水平.学习实验楼网站的<Python快速教程>

PHP学习第六天

看到这个"第六天",想想博客里没有第五天的文章,就感觉一阵惭愧,唉!无论基于什么样的原因,终归是那天没有写博客,没能坚持啊,面壁十分钟. 生气,郁闷,好好的唯品会注册页,做到一多半停电了,无线网弄了无限久才弄好,几欲发狂. 坏心情的话就不说了,今天学了有关表单的一些代码,凭着记忆力稍稍总结一下吧: 表单"form"与序列"ul"基本类似,里边也包含了各类子项目. 最常用的表单就是各网站的用户登录与注册页面. <input+内容>就是一