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

         最终发现是编码的原因,把人名(原来中文)变成英文后就可以通过了

   

 

posted @ 2017-07-26 10:39  晓之朱雀  阅读(1027)  评论(0编辑  收藏  举报