Scala版的Wordcount求和

2021-10-02 15:23:41 字數 1112 閱讀 8669

package com.lx.com

//wordcount 求和 map 集合不能排序 需要轉換成 list 才能排序

val arr = array("job dd f hom dd")

//flatmap 的作用是將 用空格切割之後的陣列 形成的新的陣列 進行壓縮

//壓縮之後array裡面就不是套的乙個array了 就成乙個乙個單詞了

//map的作用是 將每個單詞 轉換成(job,1),(dd,1),(f,1)的形式

//groupby的作用是根據key分組 列:現在上面有五個單詞但是有兩個重複的,使用groupby之後就會是四個了

//mapvalues的作用是將map的value轉換成list集合 單詞出現的次數就是list集合的長度

//size 就是求出list的長度

//tolist將map轉換成list集合才能進行排序 ** 發現不用 tolist也能進行排序 ? 不能 必須要有tolist

//sortby(x=>x._2)以list集合的值進行排序 ** 什麼時候才能用 ._2這種格式

//reverse 倒序 _+10 不能_*_ 乘以的話需要用 x=>x*x

// val res = arr.flatmap(x=>x.split(" ")).map(x=>(x,1)).groupby(x=>x._1).mapvalues(x=>x.tolist.size).tolist.sortby(_._2).reverse

val res2 = arr.flatmap(x=>x.split(" ")).map(x=>(x,1)).groupby(x=>x._1).map(x=>(x._1,x._2.tolist.size)).tolist.sortby(_._2).reverse

// val res2 = arr.flatmap(x=>x.split(" ")).map(x=>(x,1)).groupby(x=>x._1).mapvalues(x=>x.tolist.size)

// 先 map 再 flatten 和上面的 flatmap 的作用是一樣的

println(res2.tobuffer)

}

scala 整理重點版

在scala中,沒有運算子,都是方法 1.2 簡寫成 1 2 3 1.2 簡寫成 1 2 1 var val x 這是塊表示式,大括號可以省略 for和while迴圈,for常用 for迴圈語法結構 for i for i 每次迴圈將區間中的乙個值賦給i for i 1 to 10 println ...

Spark RDD 鍵值對的操作(Scala版)

鍵值對rdd是spark中許多操作所需要的常見資料型別。鍵值對rdd通常用來進行聚合運算,我們一般要先通過一些初始etl 抽取,轉化,裝載 操作來將資料轉化為鍵值對形式。spark為包含鍵值對型別的rdd提供了一些專有的操作,這些rdd被稱為pairrdd。很多儲存鍵值對的資料格式會在讀取時直接返回...

基於HDFS的實時計算和wordcount程式

基於hdfs檔案的實時計算,其實就是,監控乙個hdfs目錄,只要其中有新檔案出現,就實時處理。相當於處理實時的檔案流。streamingcontext.filestream datadirectory streamingcontext.filestream keyclass,valueclass,i...