SparkSQL与Hive整合(Spark-On-Hive)

Spark-On-Hive

为什么要把Spark和Hive整合?

  1. Hive将SQL转成MR程序,执行速度相对较慢

原理:
使用SparkSQL整合Hive,其实就是让SparkSQL去加载Hive的元数据库,然后通过SparkSQL执行引擎去操作Hive表内的数据。
所以,首先要开启Hive的元数据服务,让SparkSQL能够加载到元数据。

1、Hive开启MetaStore服务

修改:hive/conf/hive-site.xml,新增加以下配置

	<property>
      	<name>hive.metastore.warehouse.dir</name>
      	<value>/user/hive/warehouse</value>
    </property>
    <property>
      	<name>hive.metastore.local</name>
      	<value>false</value>
    </property>

后台启动Hive MetaStore服务
nohup hive --service metastore &

2、拷贝配置文件

拷贝
hive-site.xml 元数据仓库的位置等信息
core-site.xml 安全相关的配置
hdfs-site.xml HDFS相关的配置
到Spark的配置文件内

3、分发三个文件到其他节点

scp hive-site.xml core-site.xml hdfs-site.xml node02:$PWD
scp hive-site.xml core-site.xml hdfs-site.xml node03:$PWD

4、下载/查找MySQL连接驱动添加到Spark的jars文件中

5、后台启动Hive Metastore服务

IDEA代码开发

只需要将
hive-site.xml
core-site.xml
hdfs-site.xml
拷贝到项目得resource中并清空target

def main(args: Array[String]): Unit = {

  //创建sparksession  开启hive语法得支持
   val spark: SparkSession = SparkSession.builder().appName("SparkSQL_Hive").master("local[*]").enableHiveSupport().getOrCreate()

  //执行命令
  spark.sql("show databases").show()
  spark.sql("use telecom").show()
  spark.sql("show tables ").show()
  spark.sql("select * from data_connection limit 2").show()

  //关闭
  spark.stop()
}

版权声明:本文为weixin_38097878原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。