第5章 从Hive平滑过渡到Spark SQL

5-1 -课程目录

第5章 从Hive平滑过渡到Spark SQL

5-2 -A SQLContext的使用

The entry point into all functionality in Spark SQL is the SQLContext class, or one of its descendants. To create a basic SQLContext, all you need is a SparkContext.

val sc: SparkContext // An existing SparkContext. val sqlContext = new org.apache.spark.sql.SQLContext(sc) // this is used to implicitly convert an RDD to a DataFrame. import sqlContext.implicits._

5-3 -B HiveContext的使用

源码

https://gitee.com/caojieliang/imooc-spark-sql/blob/master/workspace/ImoocSparkSQLProject/src/main/scala/com/imooc/spark/HiveContextApp.scala

第5章 从Hive平滑过渡到Spark SQL

只需要有hive.site

package com.imooc.spark

import org.apache.spark.sql.hive.HiveContext

import org.apache.spark.{SparkConf, SparkContext}

/**

* HiveContext的使用

* 使用时需要通过--jars 把mysql的驱动传递到classpath

*/

object HiveContextApp {

def main(args: Array[String]) {

//1)创建相应的Context

val sparkConf = new SparkConf()

//在测试或者生产中,AppName和Master我们是通过脚本进行指定

//sparkConf.setAppName("HiveContextApp").setMaster("local[2]")

val sc = new SparkContext(sparkConf)

val hiveContext = new HiveContext(sc)

//2)相关的处理:

hiveContext.table("emp").show

//3)关闭资源

sc.stop()

}

}

第5章 从Hive平滑过渡到Spark SQL

5-4 -C SparkSession的使用

第5章 从Hive平滑过渡到Spark SQL

 

参考源码:

https://gitee.com/caojieliang/imooc-spark-sql/blob/master/workspace/ImoocSparkSQLProject/src/main/scala/com/imooc/spark/SparkSessionApp.scala

package com.imooc.spark

import org.apache.spark.sql.SparkSession

/**

* SparkSession的使用

*/

object SparkSessionApp {

def main(args: Array[String]) {

val spark = SparkSession.builder().appName("SparkSessionApp")

.master("local[2]").getOrCreate()

val people = spark.read.json("file:///Users/rocky/data/people.json")

people.show()

spark.stop()

}

}

5-5 spark-shell&spark-sql的使用

第5章 从Hive平滑过渡到Spark SQL

1、启动hive

第5章 从Hive平滑过渡到Spark SQL

2、hive里面的表

第5章 从Hive平滑过渡到Spark SQL

第5章 从Hive平滑过渡到Spark SQL

3、另外的终端

第5章 从Hive平滑过渡到Spark SQL

第5章 从Hive平滑过渡到Spark SQL

 

第5章 从Hive平滑过渡到Spark SQL

拷贝到目录

第5章 从Hive平滑过渡到Spark SQL

第5章 从Hive平滑过渡到Spark SQL

缺少驱动包

第5章 从Hive平滑过渡到Spark SQL

 

第5章 从Hive平滑过渡到Spark SQL

第5章 从Hive平滑过渡到Spark SQL

第5章 从Hive平滑过渡到Spark SQL

第5章 从Hive平滑过渡到Spark SQL

 

第5章 从Hive平滑过渡到Spark SQL

第5章 从Hive平滑过渡到Spark SQL

总结:1 、配置hive.site.xml配置文件

2、--jars传递mysql驱动包

5-6 -thriftserver&beeline的使用

参考文档:

http://spark.apache.org/docs/latest/sql-programming-guide.html#running-the-thrift-jdbcodbc-server

To start the JDBC/ODBC server, run the following in the Spark directory:

./sbin/start-thriftserver.sh

第5章 从Hive平滑过渡到Spark SQL

第5章 从Hive平滑过渡到Spark SQL

第5章 从Hive平滑过渡到Spark SQL

第5章 从Hive平滑过渡到Spark SQL

第5章 从Hive平滑过渡到Spark SQL

第5章 从Hive平滑过渡到Spark SQL

thriftserver和普通的spark-shell/spark-sql有什么区别?

1)spark-shell/spark-sql都是一个spark application;

2)thriftserver,不管你启动多少个客户端(beeline/code),永远都是一个spark application 解决了一个数据共享的问题,多个客户端可以共享数据;

5-7 -jdbc方式编程访问

第5章 从Hive平滑过渡到Spark SQL

package com.imooc.spark

import java.sql.DriverManager

/**

* 通过JDBC的方式访问

*/

object SparkSQLThriftServerApp {

def main(args: Array[String]) {

Class.forName("org.apache.hive.jdbc.HiveDriver")

val conn = DriverManager.getConnection("jdbc:hive2://hadoop001:14000","hadoop","")

val pstmt = conn.prepareStatement("select empno, ename, sal from emp")

val rs = pstmt.executeQuery()

while (rs.next()) {

println("empno:" + rs.getInt("empno") +

" , ename:" + rs.getString("ename") +

" , sal:" + rs.getDouble("sal"))

}

rs.close()

pstmt.close()

conn.close()

}

}

第5章 从Hive平滑过渡到Spark SQL