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输出。

完。

你可能感兴趣的:(spark-sql简单使用)