spark sql 单机版运行demo 及遇到的问题小结
1、 先上代码。
package Test import org.apache.spark.sql.SQLContext import org.apache.spark.{SparkConf, SparkContext} case class Person(name:String, age:Int) /** * Created by admin on 2017/7/25. */ object Person { def main(args: Array[String]) { val conf = new SparkConf().setAppName("Spark Pi").setMaster("local") val sc = new SparkContext(conf) val sqlContext = new SQLContext(sc) import sqlContext._ import sqlContext.implicits._ val people = sc.textFile("D:\\SparkSql.txt").map(_.split("@@")).map( p => Person(p(0),p(1).trim.toInt)).toDF() people.registerTempTable("people") val teenagers = sql("SELECT name, age FROM people ORDER BY age") teenagers.map( t => "Name: " + t(0)).collect().foreach(println) sc.stop(); } }
2、 样例文件
aaa@@15 bbb@@17 ccc@@16 ddd@@16
3、报错处理 及 注意事项小结:
a)No TypeTag available for person
参考文章: http://blog.csdn.net/ludonqin/article/details/51428967
即需要把case class 移出到 外面
b)Table not found: People
这个惭愧了,table 表名要区分大小写。
c)java.lang.ArrayIndexOutOfBoundsException: 1
最终发现是编码的原因,把人名(原来中文)变成英文后就可以通过了