最近迷上了spark,寫一些博客贩疙,記錄一下自己的所得讹弯。
先學(xué)一下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)
逐行解釋一下:
第一行:根據(jù)已有的SparkContext創(chuàng)建一個SQLContext这溅。
第二行:創(chuàng)建一個case class
第三行:將txt文件讀入到RDD组民,每行數(shù)據(jù)按照','分割,然后將每行數(shù)據(jù)轉(zhuǎn)成Person悲靴,然后將RDD轉(zhuǎn)成DataFrame臭胜。
第四行:用sqlContext執(zhí)行sql查詢。將結(jié)果記錄成一個RDD:teenagers
第五行:將每行數(shù)據(jù)進(jìn)行打印輸出癞尚。注意打印之前要先collect()耸三。因?yàn)镽DD的數(shù)據(jù)集是在整個集群上的,要想逐行打印浇揩,要先collect到driver端仪壮。然后通過foreach輸出。
完胳徽。