CSDN|秋名山老司机从上车到翻车的悲痛经历,带你深刻了解什么是 Spark on Hive!| 原力计划



CSDN|秋名山老司机从上车到翻车的悲痛经历,带你深刻了解什么是 Spark on Hive!| 原力计划
本文插图

作者 | Alice菌责编 | 夕颜出品 | CSDN博客本篇博客将为大家分享的内容是如何实现Spark on Hive , 即让Hive只作为存储角色 , Spark负责sql解析优化 , 执行…话不多说 , 直接上车!
上车前需知 Spark on hive 与 hive on spark 的区别
1. Spark on hive
是spark 通过Spark-SQL使用hive 语句 , 操作hive ,底层运行的还是 spark rdd 。
(1)就是通过sparksql , 加载hive的配置文件 , 获取到hive的元数据信息
(2)spark sql获取到hive的元数据信息之后就可以拿到hive的所有表的数据
(3)接下来就可以通过spark sql来操作hive表中的数据
2.hive on spark
是把hive查询从mapreduce 的mr (Hadoop计算引擎)操作替换为spark rdd(spark 执行引擎) 操作. 相对于spark on hive,这个要实现起来则麻烦很多, 必须重新编译你的spark和导入jar包 , 不过目前大部分使用的是spark on hive 。
CSDN|秋名山老司机从上车到翻车的悲痛经历,带你深刻了解什么是 Spark on Hive!| 原力计划
本文插图

上车
概述
最权威的解释请见Apache Spark官网 , http://spark.apache.org/docs/latest/sql-data-sources-hive-tables.html
CSDN|秋名山老司机从上车到翻车的悲痛经历,带你深刻了解什么是 Spark on Hive!| 原力计划
本文插图

其中最关键的一句博主已经为大家提取出来了
Configuration of Hive is done by placing your hive-site.xml, core-site.xml (for security configuration), and hdfs-site.xml (for HDFS configuration) file in conf/.到底是什么意思呢 , 这里先卖个关子 , 看到后面大伙就懂了 。

  • Hive查询流程及原理
    • 执行HQL时 , 先到MySQL元数据库中查找描述信息 , 然后解析HQL并根据描述信息生成MR任务;
    • Hive将SQL转成MapReduce执行速度慢;
    • 使用SparkSQL整合Hive其实就是让SparkSQL去加载Hive 的元数据库 , 然后通过SparkSQL执行引擎去操作Hive表内的数据;
    首先需要开启Hive的元数据库服务 , 让SparkSQL能够加载元数据 。

发车
一、Hive开启MetaStore服务
<1>修改 hive/conf/hive-site.xml 新增如下配置:
<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://news.hoteastday.com/a/configuration.xsl"?><configuration><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property><property><name>hive.metastore.local</name><value>false</value><name>hive.metastore.uris</name><value>thrift://node01:9083</value></property></configuration><2>后台启动 Hive MetaStore服务
nohup /export/servers/hive/bin/hive --service metastore 2>&1 >> /var/log.log &二、SparkSQL整合Hive MetaStore
Spark 有一个内置的 MateStore , 使用 Derby 嵌入式数据库保存数据 , 但是这种方式不适合生产环境 , 因为这种模式同一时间只能有一个 SparkSession 使用 , 所以生产环境更推荐使用 Hive 的 MetaStore 。


推荐阅读