您的位置:首页 > 财经 > 产业 > 建设官网电话_缅甸最新消息_seo博客大全_如何做宣传推广效果最好

建设官网电话_缅甸最新消息_seo博客大全_如何做宣传推广效果最好

2025/1/2 2:47:01 来源:https://blog.csdn.net/hubuwch/article/details/144783262  浏览:    关键词:建设官网电话_缅甸最新消息_seo博客大全_如何做宣传推广效果最好
建设官网电话_缅甸最新消息_seo博客大全_如何做宣传推广效果最好

文章目录

    • 集成hive metastore
    • SQL测试
    • spark-sql 语法
    • SQL执行流程
    • 两种数仓架构的选择
    • hive on spark数仓配置
    • 经验

spark-sql没有元数据管理功能,只有sql 到RDD的解释翻译功能,所以需要和hive的metastore服务集成在一起使用。

集成hive metastore

在spark安装目录conf下,新增hive-site.xml配置文件,内容如下:

<configuration><!-- 指定存储元数据metastore要连接的地址 --><property><name>hive.metastore.uris</name><value>thrift://127.0.0.1:9083</value><description>URI for client to connect to metastore server</description></property><!--配置数据表数据存储目录--><property><name>hive.metastore.warehouse.dir</name><value>/home/datahouse/hive/warehouse</value></property>
</configuration>

然后,就是要保证,hive + hadoop的数仓已能正常运行。因为spark需要使用hive的metastore服务,所以hive的相关服务得正常运行。可以参考 【数据仓库】hive + hadoop数仓搭建实践文章。

集成完成后就可以开始启动spark-sql了。

SQL测试

到spark 的bin目录,执行

./spark-sql

如下:

[root@yd-ss bin]# ./spark-sql
24/12/27 14:49:53 WARN Utils: Your hostname, yd-ss resolves to a loopback address: 127.0.0.1; using XX.XX.XX.XX instead (on interface bond0)
24/12/27 14:49:53 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
24/12/27 14:49:54 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Spark master: local[*], Application Id: local-1735282198034
spark-sql> 

执行如下脚本:

show database;

输出:

spark-sql> show databases;
db_msg
default
test
Time taken: 6.644 seconds, Fetched 3 row(s)

可以看到之前在hive+hadoop数仓下建的库都可以通过spark-sql 查出来了,因为两者共用了一个metastore服务,元数据是一样的,数仓地址也是一样的。

spark-sql 语法

由于spark-sql 使用的元数据管理是hive的元数据服务,所以,spark-sql的语法可以理解为和hive SQL是一样的。

SQL执行流程

在这里插入图片描述

上图是hive sql 和 spark sql的执行流程图及框架图。可以看出:

1 hive 偏重的是 hive sql 解释 和 元数据管理,分布式计算和存储依赖于hadoop的MR和HDFS;

2 spark 偏重的是spark sql 解释 和 RDD分布式计算,元数据管理和分布式存储依赖于hive 的 metastore服务和hadoop的HDFS;

3 提供两种数仓数据分析工具 hive sql 和 spark sql,都可以使用数据库客户端工具去连接访问。

两种数仓架构的选择

上图,体现了两种数仓的架构。

hive + hadoop 数仓:分布式计算使用MR,性能计算很慢,在BI数据集配置时,经常会超时;

spark + hive (metastore) + hadoop(HDFS)数仓:分布式计算使用spark RDD ,性能计算快,但还要维护hive ,架构较复杂;

如果基于hive + hadoop 数仓,将MR分布式计算框架换成 Spark RDD的计算框架,是不是就很完美了,强强联合。

hive on spark数仓配置

hive sql 会被解释为Spark RDD 计算执行。

一开始也是怀着激动的心来的,因为hive on MR 实在是太慢了,spark又非常快,两者强强联合,岂不是最佳实践。网上也搜到了很多教程,但都是对于hive的低版本的。但是现实却发生了变化。

在进行该配置之前,需要了解下hive和spark的匹配关系。

hive 4.0 版本的源码pom中已经看不到引用的spark版本了,有可能在4.0版本放弃了spark的支持。

经过查找4.0版本的官方文档,可以看到:

https://hive.apache.org/docs/latest/overview-of-major-changes_283118379/

在这里插入图片描述

可以看到直接就是移除了spark,还不是废弃。最新的版本hive4.0已经不支持spark集成了。这也是为什么在hive sql 会话下,执行

set hive.execution.engine=spark;

会报错

[42000][1] Error while processing statement: 'SET hive.execution.engine=spark' FAILED in validation : Invalid value.. expects one of [mr, tez].

如果想继续使用hive on spark 架构,就只能使用hive 4.0 以前的版本了。

在hive4.0之前的版本hive3.1.3中,依赖的spark 版本为2.3.0,太旧了。

但是可以尝试基于hive3.1.3的源码,修改saprk的版本为新版本重新编译。这里不再往下探究。

毕竟hive4.0 已经移除了spark,数仓搭建技术还是以hive为主,因为它稳定。官方提供了Tez的执行引擎替代MR。也能提高hive的执行效率。

经验

1 hive 4.0移除了saprk支持,只能使用MR和Tez,意味着往后版本,hive on spark就不存在了,若想使用,需要将hive换到4,0以前的版本;

2 spark on hive可以继续使用,但这个是以spark为主,利用hive的元数据服务;但总是感觉没有hive专业;

3 hive4.0往后当数仓使用,需要集成TEz引擎,以提升效率。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com