spark-sql簡單使用

最近迷上了spark,寫一些博客,記錄一下自己的所得。

先學一下spark document上的樣例。

代碼:

val sqlContext = new org.apache.spark.sql.SQLContext(sc)

case class Person(name: String, age: Long)

val people = sc.textFile("examples/src/main/resources/people.txt").map(_.split(",")).map(p => Person(p(0), p(1).trim.toInt)).toDF()

people.registerTempTable("people")

val teenagers = sqlContext.sql("SELECT name, age FROM people WHERE age >= 13 AND age <= 19")

teenagers.collect().foreach(println)

逐行解釋一下:

第一行:根據已有的SparkContext創建一個SQLContext。

第二行:創建一個case class

第三行:將txt文件讀入到RDD,每行數據按照','分割,然后將每行數據轉成Person,然后將RDD轉成DataFrame。

第四行:用sqlContext執行sql查詢。將結果記錄成一個RDD:teenagers

第五行:將每行數據進行打印輸出。注意打印之前要先collect()。因為RDD的數據集是在整個集群上的,要想逐行打印,要先collect到driver端。然后通過foreach輸出。

完。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容