Spark 大數據文本統計


此程序功能:

1.完成對10.4G.csv文件各個元素頻率的統計 

2.獲得最大的統計個數

3.對獲取到的統計個數進行降序排列

4.對各個元素出現次數頻率的統計

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

/**
  */
object 大數據統計 {
  def main(args: Array[String]): Unit = {
    val conf=new SparkConf().setAppName("大數據").setMaster("local[4]")
    val sc=new SparkContext(conf)
//    val text= sc.textFile("/home/soyo/桌面/shell編程測試/1.txt")
val text= sc.textFile("/home/soyo/下載/Hadoop+Spark+Hbase/all2.csv")
    //text.foreach(println)
    val wordcount= text.flatMap(line=>line.split(",")).map(word=>(word,1))
         .reduceByKey((a,b)=>a+b)
        wordcount.collect().foreach(println)
//    wordcount.saveAsTextFile("/home/soyo/桌面/shell編程測試/1-1-1.txt")
        println("單獨文件中各個數的統計個數")
//        wordcount.map(_._2).foreach(println)
    println("獲取統計的最大數")
   // wordcount.map(_._2).saveAsTextFile("/home/soyo/下載/Hadoop+Spark+Hbase/77.txt")
    println(wordcount.map(_._2).max())
        println("對獲取到的數降序排列")
        wordcount.map(_._2).sortBy(x=>x,false).foreach(println)  //false:降序 true:升序
       println("轉變為key-value形式")
        wordcount.map(_._2).map(num=>(num,1)).reduceByKey((a,b)=>a+b).foreach(println)
        println("對key-value按key再排序,獲得結果表示:假設文件中'soyo5'總共出現10次,可文件'soyo1'也出現10次,最后整個排序獲得的是(10,2)10次的共出現2次")
    wordcount.map(_._2).map(num=>(num,1)).reduceByKey((a,b)=>a+b).sortByKey().foreach(println)

  }

}

數據內容:

Spark 保存的文件是這樣的:

這里可以用一個腳本將這么多的文件進行合並:

#!/bin/bash
cat * >>soyoo.txt

結果太多只寫一個:

獲取統計的最大數
294887496 (數據中有一個元素出現了這么多次)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM