您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)spark01--scala 的wordcount的過程是怎樣的,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
第一版:原始版本
def main(args: Array[String]): Unit = { val conf = new SparkConf() conf.setAppName("workcount") conf.setMaster("local") //SparkContext 是通往spark 集群的唯一通道 val sc = new SparkContext(conf) /** 加載配置當(dāng)前項(xiàng)目下words文件的內(nèi)容 * 內(nèi)容為: hello java hello spark hello hdfs hello mr hello java hello spark */ val lines = sc.textFile("./words") //line為每一行,每一行經(jīng)過" "空格切分成RRD類型 val lists: RDD[String] = lines.flatMap(line => {line.split(" ")}) //單詞轉(zhuǎn)換成二元元組 val values: RDD[(String, Int)] = lists.map(word=>{new Tuple2(word,1)}) /** * reduceByKey 函數(shù)是先把相同的單詞(key)進(jìn)行分組,如 hello 1 hello 1 hello 1 hello 1 hello 1 hello 1 java 1 java 1 spark 1 spark 1 hdfs 1 mr 1 (v1:Int, v2:Int)=>{v1+v2} 表示經(jīng)過分組后的單詞元組(Sring,Int),相同key的 value進(jìn)行累加,返回v1+v2 就是累加的值 */ val result: RDD[(String, Int)] = values.reduceByKey((v1:Int, v2:Int)=>{v1+v2}) //遍歷結(jié)果 result.foreach(println) //關(guān)閉 sc.stop() }
第二版:
def main(args: Array[String]): Unit = { val conf = new SparkConf() conf.setAppName("workcount") conf.setMaster("local") val sc = new SparkContext(conf) val result = sc.textFile("./words").flatMap(line=>line.split(" ")).map(world=>new Tuple2(world,1)).reduceByKey((v1:Int, v2:Int)=>{v1+v2}) result.foreach(println) sc.stop() }
第三版本:最簡版本
def main(args: Array[String]): Unit = { val conf = new SparkConf() conf.setAppName("workcount") conf.setMaster("local") val sc = new SparkContext(conf) val result = sc.textFile("./words").flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_) result.foreach(println) sc.stop() }
簡化后解釋:
xxx.flatMap(line=>line.split(" "))中參數(shù)line只在=>后面使用一次,可以用 "_" 符號(hào)來表示該參數(shù),xxx.flatMap(_.split(" "))
xxx.map(world=>new Tuple2(world,1))中world參數(shù)也是在=>后只使用一次,可以使用 "_"來表示,元組可以省略new,也可以省略Tuple2,xxx.map((_,1))
xxx.reduceByKey((v1:Int, v2:Int)=>{v1+v2})中v1,v2也是在=>后只使用一次,均可以使用"_"來表示,xxx.reduceByKey((_+_)
看完上述內(nèi)容,你們對(duì)spark01--scala 的wordcount的過程是怎樣的有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。