Spark+scala+Idea wordcount 示例
阿新 • • 發佈:2018-12-25
上篇文章搭建了spark,並給出了java版本的WordCount示例,但是總感覺spark程式用scala語言編寫才更好,因為scala語言會讓spark程式很簡潔,能在很大程度上提高開發效率,下面給出scala版本的WordCount.
idea專案搭建
首先用idea搭建一個maven工程。
在main資料夾下建立scala資料夾,然後將scala資料夾設定成原始碼資料夾。右鍵工程名->open model setting ->Modules
選中scala將其設定為Sources
此處若不進行設定,在執行程式的時候將找不到我們的主函式,因為idea並沒有編譯這個檔案。
maven檔案
<dependencies>
<!-- https://mvnrepository.com/artifact/org.scala-lang/scala-library -->
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.11.11</version >
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.11 -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.1.1</version >
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-mllib_2.11 -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-mllib_2.11</artifactId>
<version>2.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql_2.11 -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-hive_2.11 -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.11</artifactId>
<version>2.1.1</version>
</dependency>
scala程式碼:
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
object WordCount {
def main(args: Array[String]) {
val conf = new SparkConf()
conf.setAppName("wordcount")
//conf.setMaster("local")
val sc = new SparkContext(conf)
val line = sc.textFile("/usr/local/hadoop/input")
line.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).saveAsTextFile("/usr/local/hadoop/output")
sc.stop()
}
}
執行程式碼
在Edit Configurations設定為本地執行,VM options設定如下:
-Dspark.master=local
然後直接執行main函式即可。在結果輸出的路徑可以檢視到相關檔案。
總結
相比java程式碼,scala程式碼更是簡潔,java30行的程式碼scala呼叫幾個函式就完成了,由此可見scala在spark工程中的優勢!