1. 程式人生 > >使用SparkSQL2.x的SQL方式實現WordCount

使用SparkSQL2.x的SQL方式實現WordCount

程式碼裡面有很詳細的說明

程式碼實現:

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()


  }
}

執行後你會發現他的速度會變慢,這是因為他會生成執行計劃,然後再執行計算