zoukankan      html  css  js  c++  java
  • 寒假学习第七天

    编写独立应用程序实现数据去重
    对于两个输入文件 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
     
      }
    }
  • 相关阅读:
    Red hat 5挂载U盘
    Win7+VMware Workstation环境下的CentOS-Linux网络连接设置
    rand()随机数的产生
    phpmyadmin数据库导入出错
    dede忽略错误
    wamp
    网页地图map
    Redefining already defined constructor
    SCREAM:Error suppression ignored for
    Python+selenium之疑难点解决之去除readonly的限制
  • 原文地址:https://www.cnblogs.com/lishengming00/p/12275158.html
Copyright © 2011-2022 走看看