zoukankan      html  css  js  c++  java
  • spark学习——RDD

      今天完成了RDD的相关实验还是使用Scala来进行相关的效果,RDD是spark的数据集,通过spark-shell编程我知道了相关spark的语言,还是有很多不足之处。

    spark交互式编程相关的就不写了,给出今天我编译的相关独立应用程序编程。

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

             对于两个输入文件 A 和 B,编写 Spark 独立应用程序,对两个文件进行合并,并剔除其中重复的内容,得到一个新文件 C。

    源代码:

    package ch.Tutorial4
    import scala.io.Source
    import java.io.PrintWriter
    import java.io.File
    import Array._
    import scala.util.control._
    
    object exercise4_2 {
       def main(args: Array[String]){
        File() 
        
      }
       def File(){
         val AFile=InFile("A.txt")
         val BFile=InFile("B.txt")
         var CFile=concat( AFile, BFile)
         var CFile2=new Array[String](CFile.size)
         val loop = new Breaks;
         
         
         for(i<-CFile){
          loop.breakable{
           for(j<- 0 to CFile2.size-1 ){
             if(CFile2(j)!=null){if(i==CFile2(j))loop.break;}
             else {CFile2(j)=i;loop.break;}
           }
         }
         }
          outFile(CFile2)
       }
       def InFile(path:String) : Array[String] ={
        val source = Source.fromFile(path, "UTF-8")
        val lines = source.getLines().toArray
        return lines
         
       }
       def outFile(data:Array[String]){
        val writer = new PrintWriter(new File("C.txt"))
        for(i <-data)
        if(i!=null)writer.println(i)
        writer.close()
       }
    }
    exercise4_2.scala

    生成的文件截图:

    A.txt:

     

    B.txt:

     

     生成的C.txt:

     

       

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

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

    源代码:

    package ch.Tutorial4
    import scala.io.Source
    import java.io.PrintWriter
    import java.io.File
    import Array._
    import scala.util.control._
    
    object exercise4_3 {
      def main(args: Array[String]){
        File() 
        
      }
      def File(){
        val data=InFile("student.txt")
        var student= ofDim[String](4,2)
        val loop = new Breaks;
        var time:Int=0
        for(i<-data){
          var text=String.valueOf(i);
          var text2=text.split(" ")
          loop.breakable{
          for(j<- 0 to student.size-1){
            if(student(j)(0)==null){student(j)(0)=text2(0);student(j)(1)=text2(1);loop.break;}
            else{
              if(text2(0)==student(j)(0)){student(j)(1)=String.valueOf(student(j)(1).toInt+text2(1).toInt);time+=1}
            }
          }}
        }
        for(j<-0 to 3){
         student(j)(1)=String.valueOf(student(j)(1).toDouble/3)
        }
        outFile(student)
      }
      def InFile(path:String) : Array[String] ={
        val source = Source.fromFile(path, "UTF-8")
        val lines = source.getLines().toArray
        return lines
         
       }
       def outFile(data:Array[Array[String]]){
        val writer = new PrintWriter(new File("avg.txt"))
        for(i <-0 to data.size-1)
        writer.println(data(i)(0)+" "+data(i)(1))
        writer.close()
       }
    }
    exercise4_3.scala

        截图:

     

  • 相关阅读:
    关于清除浮动的最佳方法
    Bootstrap学习——栅格系统
    人工智能、机器学习和深度学习之间的区别与联系
    speech
    爬虫—启新宝接口函数
    爬虫—天眼查接口函数
    python链接mysql获得某列最大值
    获取指定路径下特定后缀的文件
    python读Excel
    DataTable 递归 简单的程序,来实现无限级列表 结合 jquery.table.js 实现
  • 原文地址:https://www.cnblogs.com/huan-ch/p/12296421.html
Copyright © 2011-2022 走看看