前一篇文章中已經(jīng)完成了Scala開發(fā)環(huán)境的搭建,并且在IDEA中安裝好了Scala 插件。本文將進行詞頻統(tǒng)計Spark應(yīng)用的Scala版本開發(fā)。
一、創(chuàng)建新的Maven模塊
在現(xiàn)有的父項目中,創(chuàng)建一個新的scala 模塊,用于編寫詞頻統(tǒng)計Spark應(yīng)用,如圖所示。選擇左側(cè)的Maven(或者下面的Scala),點擊【Next】按鈕。
然后,輸入模塊名稱(Name):ScalaWordCount,如圖所示,點擊【Finish】按鈕就創(chuàng)建好了。
二、將scala框架添加到項目
在IDEA啟動后進入的界面中,可以看到界面左側(cè)的項目界面,已經(jīng)有一個名稱為WordCount的工程。請在該工程名稱上右鍵單擊,在彈出的菜單中,選擇Add Framework Surport 。
在彈出的Add Frameworks Support 窗口中,左側(cè)有一排可勾選項,找到scala,勾選即可。
三、添加spare-core依賴包
在ScalaWordCount 模塊的pom.xml 文件中,添加spare-core依賴項,如下所示:
<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version>3.2.1</version></dependency>
{!– PGC_COLUMN –}
<version>3.2.1</version></dependency>
注意:選擇的scala版本,需要和本地環(huán)境中的scala 版本保持一致。如果不一致,在編譯的時候會報錯。
四、創(chuàng)建Scala應(yīng)用
在ScalaWordCount 子模塊中,新建包名:com.rickie.spark3,如圖所示。然后,創(chuàng)建一個新的Scala Class。
Name 中輸入ScalaWordCount,類型選擇Object。
Scala類中沒有Java那樣的靜態(tài)成員。Scala使用 object 關(guān)鍵字定義單例對象(Singleton Object)。單例對象的定義和類定義類似,只是用object關(guān)鍵字替換了class關(guān)鍵字。
如果對Scala 語句有學(xué)習(xí)興趣,可以訪問《Scala開發(fā)快速入門》技術(shù)專欄。該專欄適合想要快速入門Scala語言,基于Spark/Flink進行大數(shù)據(jù)開發(fā)的讀者。
ScalaWordCount 的完整代碼如下所示:
package com.rickie.spark3import org.apache.spark.{SparkConf, SparkContext}object ScalaWordCount { def main(args: Array[String]): Unit = { val inputFile = \"./data/wordcount.txt\" val conf = new SparkConf().setAppName(\"Scala Word Count\").setMaster(\"local\") val sc = new SparkContext(conf) val textFile = sc.textFile(inputFile).cache() val wordCount = textFile.flatMap(line => line.split(\"s \")) .map(word => (word, 1)) .reduceByKey((x, y) => x y) wordCount.foreach(println) sc.stop() }}
和之前Java版本的代碼相比,代碼簡潔很多。
五、啟動ScalaWordCount
啟動ScalaWordCount中的main()方法,正常運行之后,在Console控制臺可以看到如下輸出結(jié)果:
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。