SparkSQL与Hive的交互有两种方式,一种是spark-sql,另一种是spark-shell。要注意,访问hive前要把$HIVE_HOME/conf/hive-site.xml拷贝到$SPARK_HOME/conf,还有必须要启动hdfs,因为hive的数据是存放在hdfs上的,既然要访问hive所以需要启动hdfs。
一、启动spark-sql连hive
1、首先要配置spark-defaults.conf,
添加spark.executor.extraClassPath和spark.driver.extraClassPath,这两个同时指向我们存放JDBC驱动jar包的路径
如下图:
2、启动spark-sql,
看启动日志是4041端口,在浏览器看看 UI界面,http://hadoop001:4041/jobs/ ,也成功启动了。
3、查询数据
查询一下是否可以查到hive上的数据,可以查到数据的
UI界面也会显示具体的信息
二、启动spark-shell连hive
前面是通过spark-sql与hive交互,而另一种方式是spark-shell,先启动spark-shell
连接成功后,看到有‘spark’这个上下文,可以用spark.sql查数据,比如查看哪个库,哪个表,再查某个表有什么数据
scala> spark.sql("show databases").show
scala> spark.sql("use d5_hive").show ## 选择使用哪个数据库
scala> spark.sql("show tables").show
scala> spark.sql("select * from page_views limit 5").show
也是同样可以查询到该表page_views的数据的。
另:如果在hive创建表,在Spark-SQL里面可以用吗?结果是没有任何问题的,这个就是metastore带来的最好的好处,当需要切换你的计算框架时,就非常方便。