此程序功能:
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 (數據中有一個元素出現了這么多次)