使用SparkSQL2.x的SQL方式實現WordCount
阿新 • • 發佈:2018-11-10
程式碼裡面有很詳細的說明
程式碼實現:
package cn.ysjh0014.SparkSql import org.apache.spark.sql.{DataFrame, Dataset, SparkSession} object SparkSQLWordCount { def main(args: Array[String]): Unit = { //建立SparkSession val session: SparkSession = SparkSession.builder().appName("SQLWordCount").master("local[4]").getOrCreate() //讀資料,是lazy //Dataset也是一個分散式資料集,是對RDD的進一步分裝 //Dataset只有一列,預設這列叫value val lines: Dataset[String] = session.read.textFile(args(0)) //匯入隱式轉換 import session.implicits._ val word: Dataset[String] = lines.flatMap(_.split(",")) //登錄檔 word.createTempView("test") //執行SQL val result: DataFrame = session.sql("SELECT value,COUNT(*) counts FROM test GROUP BY value ORDER BY counts DESC") result.show() session.stop() } }
執行後你會發現他的速度會變慢,這是因為他會生成執行計劃,然後再執行計算