Spark SQL整合Hive

1. Spark SQL整合Hive

为什么要进行整合?
由于hive原生是基于MapReduce的,导致其查询耗时较长。而SparkSQL底层是spark core(RDD),在内存中计算数据,且是粗粒度资源调度。
为了保留Hive的架构解决方案,并优化查询速度,采用SparkSql与hive整合(spark on hive),通过SparkSQL读取hive中表的元数据,把HiveHQL底层采用MapReduce处理任务导致性能慢的特点,改为更加强大的Spark core引擎来进行相应的计算处理。
在这里插入图片描述

环境搭建准备 ( 搭建步骤前面写过 )

  1. 搭建hadoop集群
  2. 安装hive构建数据仓库
  3. 安装spark集群

SparkSQL整合hive
Spark SQL的其中一个分支就是Spark on Hive,就是使用Hive中HQL的解析逻辑、执行计划翻译、执行计划优化等逻辑,可认为将物理执行Task从MR作业替换成了Spark作业。
Spark SQL整合hive就是获取hive表中的元数据信息(在mysql中),然后通过Spark SQL来操作数据。
整合步骤:

2. SparkSQL与Hive共用元数据

2.1 开启Hive元数据服务

2.1.1 修改hive配置

在hive的 hive-site.xml 修改一行配置,增加了这一行配置之后,以后在使用hive之前都 需要先启动元数据服务
开启hive元数据服务的目的: 是让spark sql 可以获取到hive的元数据

<property>
<name>hive.metastore.uris</name>
<value>thrift://master:9083</value>
</property>

在这里插入图片描述

2.1.2 启动hive元数据服务

启动Hive元数据服务,并验证Hive是否可用
启动命令:

nohup  hive --service metastore >> metastore.log 2>&1 &

在这里插入图片描述

验证hive是否可用:hive

2.2 拷贝hive-site.xml和mysql驱动

hive-site.xml 复制到spark conf目录下
cp hive-site.xml /usr/local/soft/spark-2.4.5/conf/
mysql 驱动包复制到saprk jars目录下
cp mysql-connector-java-5.1.17.jar /usr/local/soft/spark-2.4.5/jars/
在这里插入图片描述

2.3 启动SparkSQL

使用yarn-client模式启动,不能使用yarn-cluster模式
使用命令启动:spark-sql --master yarn-client
在这里插入图片描述

2.4 测试

1、在spark-sql中设置运行参数:set spark.sql.shuffle.partitions=2;
SparkSQL默认使用的并行度是200个,可以根据数据量的大小进行调。由于student库中的student表数据量较小,将之调整为2
2、统计每个班级的人数
select clazz,count(1) from student group by clazz;
在这里插入图片描述

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值