【数据仓库】SparkSQL数仓实践

文章目录

    • 集成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引擎,以提升效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/891057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基本算法——回归

本节将通过分析能源效率数据集&#xff08;Tsanas和Xifara&#xff0c;2012&#xff09;学习基本的回归算法。我们将基 于建筑的结构特点&#xff08;比如表面、墙体与屋顶面积、高度、紧凑度&#xff09;研究它们的加热与冷却负载要 求。研究者使用一个模拟器设计了12种不…

V-Express - 一款针对人像视频生成的开源软件

V-Express是腾讯AI Lab开发的一款针对人像视频生成的开源软件。它旨在通过条件性丢弃&#xff08;Conditional Dropout&#xff09;技术&#xff0c;实现渐进式训练&#xff0c;以改善使用单一图像生成人像视频时的控制信号平衡问题。 在生成过程中&#xff0c;不同的控制信号&…

Java与SQL Server数据库连接的实践与要点

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;Java和SQL Server数据库交互是企业级应用开发中的重要环节。本文详细探讨了使用Java通过JDBC连接到SQL Server数据库的过程&#xff0c;包括加载驱动、建立连接、执行SQL语句、处理异常、资源管理、事务处理和连…

学习记录—正则表达式-基本语法

正则表达式简介-《菜鸟教程》 正则表达式是一种用于匹配和操作文本的强大工具&#xff0c;它是由一系列字符和特殊字符组成的模式&#xff0c;用于描述要匹配的文本模式。 正则表达式可以在文本中查找、替换、提取和验证特定的模式。 本期内容将介绍普通字符&#xff0c;特殊…

企业安装加密软件有什么好处?

加密软件为企业的安全提供了很多便利&#xff0c;从以下几点我们看看比较重要的几个优点&#xff1a; 1、数据保护&#xff1a;企业通常拥有大量的商业机密、客户数据、技术文档等敏感信息。加密软件可以对这些信息进行加密处理&#xff0c;防止未经授权的人员访问。即使数据被…

京东供应链创新与实践:应用数据驱动的库存选品和调拨算法提升履约效率

2024 年度总结系列 2024 年 10 月&#xff0c;京东零售供应链技术团队凭借其在库存选品与调拨技术上的创新与实践&#xff0c;荣获运筹与管理学领域的国际顶级奖项 Daniel H. Wagner Prize。本文为您介绍获奖背后的供应链技术创新和落地应用。 00 摘要 在电商行业中&#x…

大数据技术-Hadoop(二)HDFS的介绍与使用

目录 1、HDFS简介 1.1 什么是HDFS 1.2 HDFS的优点 1.3、HDFS的架构 1.3.1、 NameNode 1.3.2、 NameNode的职责 1.3.3、DataNode 1.3.4、 DataNode的职责 1.3.5、Secondary NameNode 1.3.6、Secondary NameNode的职责 2、HDFS的工作原理 2.1、文件存储 2.2 、数据写…

在 C# 中优化 JPEG 压缩级别和文件大小

此示例可让您检查不同 JPEG 压缩级别的图像质量。使用文件菜单的打开命令加载图像文件。然后使用“JPEG 压缩指数 (CI)”组合框选择压缩级别。程序将图像保存到具有该压缩级别的临时文件中&#xff0c;并显示生成的图像和文件大小。 该程序的关键是以下SaveJpg方法&#xff0c;…

Pandas02

Pandas01: Pandas01 文章目录 内容回顾1 数据的读取和保存1.1 读写Excel文件1.2 读写CSV1.3 读写Mysql 2 DataFrame 数据查询2.1 筛选多列数据2.2 loc 和 iloc2.3 query查询方法和isin 方法 3 DataFrame增 删 改数据3.1 增加一列数据3.2 删除一行/一列数据3.3 数据去重3.4 数据…

Flink定时器

flink的定时器都是基于事件时间&#xff08;event time&#xff09;或事件处理时间&#xff08;processing time&#xff09;的变化来触发响应的。对一部分新手玩家来说&#xff0c;可能不清楚事件时间和事件处理时间的区别。我这里先说一下我的理解&#xff0c;防止下面懵逼。…

Docker中的分层(Layer)

docker中有分层的概念&#xff0c;如下图所示 上面是容器层&#xff08;Container layer&#xff09;&#xff0c;下面是镜像层&#xff08;Image layers&#xff09;。 镜像层的内容是静态的&#xff0c;读和写的操作&#xff0c;都是在容器层发生&#xff0c;专门为容器的读…

RoboMIND:多体现基准 机器人操纵的智能规范数据

我们介绍了 RoboMIND&#xff0c;这是机器人操纵的多体现智能规范数据的基准&#xff0c;包括 4 个实施例、279 个不同任务和 61 个不同对象类别的 55k 真实世界演示轨迹。 工业机器人企业 埃斯顿自动化 | 埃夫特机器人 | 节卡机器人 | 珞石机器人 | 法奥机器人 | 非夕科技 | C…

python报错ModuleNotFoundError: No module named ‘visdom‘

在用虚拟环境跑深度学习代码时&#xff0c;新建的环境一般会缺少一些库&#xff0c;而一般解决的方法就是直接conda install&#xff0c;但是我在conda install visdom之后&#xff0c;安装是没有任何报错的&#xff0c;conda list里面也有visdom的信息&#xff0c;但是再运行代…

C语言性能优化:从基础到高级的全面指南

引言 C 语言以其高效、灵活和功能强大而著称&#xff0c;被广泛应用于系统编程、嵌入式开发、游戏开发等领域。然而&#xff0c;要写出高性能的 C 语言代码&#xff0c;需要对 C 语言的特性和底层硬件有深入的了解。本文将详细介绍 C 语言性能优化的背后技术&#xff0c;并通过…

go多版本管理工具g win安装配置

go多版本管理工具g 基本介绍仓库安装配置配置环境配置系统变量配置path变量测试使用配置完环境变量之后&#xff0c;打开终端进行测试使用查看 g 的环境变量配置&#xff0c;g env 为环境变量配置&#xff0c;g -v为当前版本信息查看可下载列表下载安装指定版本go&#xff0c;并…

PlasmidFinder:质粒复制子的鉴定和分型

质粒&#xff08;Plasmid&#xff09;是一种细菌染色体外的线性或环状DNA分子&#xff0c;也是一种重要的遗传元素&#xff0c;它们具有自主复制能力&#xff0c;可以在细菌之间传播&#xff0c;并携带多种重要的基因(如耐药基因与毒力基因等)功能。根据质粒传播的特性&#xf…

细说STM32F407单片机通过IIC读写EEPROM 24C02

目录 一、操作说明 二、工程配置 1、时钟、DEBUG、GPIO、USART6、NVIC、Code Generator 2、 IIC2 &#xff08;1&#xff09;Master Features组&#xff0c;主设备参数 &#xff08;2&#xff09;Slave Features组&#xff0c;从设备参数 三、软件设计 1、KELED 2、E…

神经网络-Inception

Inception网络是由Google开发的一种深度卷积神经网络架构&#xff0c;旨在解决计算机视觉领域中的图像分类和物体识别任务。 Inception网络最初在2014年被提出&#xff0c;并在ImageNet图像分类挑战赛上取得了很好的结果。其设计灵感来自于模块化的思想&#xff0c;将不同尺度…

PyTorch Instance Normalization介绍

Instance Normalization(实例归一化) 是一种标准化技术,与 Batch Normalization 类似,但它对每个样本独立地对每个通道进行归一化,而不依赖于小批量数据的统计信息。这使得它非常适合小批量训练任务以及图像生成任务(如风格迁移)。 Instance Normalization 的原理 对每…

国内独立开发者案例及免费送独立开发蓝图书

独立开发者在国内越来越受到关注&#xff0c;他们追求的是一种自由且自给自足的工作状态。 送这个&#xff1a; 少楠light&#xff08;Flomo、小报童、如果相机&#xff09;&#xff1a;他们是独立开发者的典范&#xff0c;不仅开发了多款产品&#xff0c;还坚信“剩者为王”…