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

5-1 -课程目录

 

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

 

只需要有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-4 -C SparkSession的使用

 

 

参考源码:

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的使用

 

1、启动hive

2、hive里面的表

 

3、另外的终端

 

 

拷贝到目录

 

缺少驱动包

 

 

 

总结: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

 

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

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

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

 

5-7 -jdbc方式编程访问

 

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()

}

}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值