Hadoop技术栈(三)数仓工具HIVE

[Hadoop高可用集群]数仓工具之Hive的安装部署(超级详细,适用于初学者) Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。最初,Hive是由Facebook开发,后来由Apache软件基金会开发,并作为进一步将它作为名义下Apache Hive为一个开源项目。Hive 建立在Hadoop 基础之上,Hive 与 Hadoop 紧密集成,其设计可快速对 PB 级数据进行操作。 阅读详情

概念(HIVE并非数据库)

Hive 是基于 Hadoop 的一个数据仓库工具,可以将 结构化的数据文件 映射为一张表
( 类似于 RDBMS 中的表 ) ,并提供类 SQL 查询功能; Hive 是由 Facebook 开源,用于解
决海量结构化日志的数据统计。
Hive 本质是:将 SQL 转换为 MapReduce 的任务进行运算
底层由 HDFS 来提供数据存储
可以将 Hive 理解为一个: 将 SQL 转换为 MapReduce 任务的工具

HIVE的安装配置

参考我这边文章装mysql:Linux——MySQL8安装(更新)_linux wgt安装mysql8-优快云博客

下载网址:http://archive.apache.org/dist/hive/

mysql里边创建hive用户

-- 创建用户设置口令、授权、刷新
CREATE USER 'hive'@'%' IDENTIFIED BY '12345678';
GRANT ALL ON *.* TO 'hive'@'%';
FLUSH PRIVILEGES;

解压文件:tar zxvf apache-hive-2.3.7-bin.tar.gz -C ../servers/

重命名文件:mv apache-hive-2.3.7-bin hive-2.3.7

# 在 /etc/profile 文件中增加环境变量
export HIVE_HOME=/opt/lxq/servers/hive-2.3.7
export PATH=$PATH:$HIVE_HOME/bin
# 执行并生效
source /etc/profile

cd $HIVE_HOME/conf vi hive-site.xml 增加以下内容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- hive元数据的存储位置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://linux123:3306/hivemetadata?createDatabaseIfNotExist=true&amp;useSSL=false</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<!-- 指定驱动程序 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<!-- 连接数据库的用户名 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>username to use against metastore database</description>
</property>
<!-- 连接数据库的口令 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>12345678</value>
<description>password to use against metastore database</description>
</property>
</configuration>

将 mysql-connector-java-5.1.46.jar 拷贝到 $HIVE_HOME/lib

初始化元数据库:schematool -dbType mysql -initSchema

启动HIVE

# 启动 hive 服务之前,请先启动 hdfs 、 yarn 的服务
[root@linux123 ~] $ hive
hive> show functions;

Hive 属性配置

hive-site.xml 中增加以下常用配置
<property>
<!-- 数据默认的存储位置(HDFS) -->
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
<property>
<!-- 在命令行中,显示当前操作的数据库 -->
<name>hive.cli.print.current.db</name>
<value>true</value>
<description>Whether to include the current database in the Hive prompt.</description>
</property>
<property>
<!-- 在命令行中,显示数据的表头 -->
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<!-- 操作小规模数据时,使用本地模式,提高效率 -->
<name>hive.exec.mode.local.auto</name>
<value>true</value>
<description>Let Hive determine whether to run in local mode automatically</description>
</property>

hive日志文件

Hive 的 log 默认存放在 /tmp/root 目录下( root 为当前用户名);这个位置可以修 改:

vi $HIVE_HOME /conf/hive-log4j2.properties
# 添加以下内容:
property.hive.log.dir = /opt/lxq/servers/hive-2.3.7/logs
-- 查看全部参数
hive> set ;
-- 查看某个参数
hive> set hive .exec.mode.local.auto ;
hive .exec.mode.local.auto = false
1 、用户自定义配置文件 (hive-site.xml)
2 、启动 hive 时指定参数 (-hiveconf)
3 、 hive 命令行指定参数 (set)
配置信息的优先级:
set > -hiveconf > hive-site.xml > hive-default.xml

hive命令


hive -e "select * from users"
# 执行文件中的SQL语句
hive -f hqlfile1.sql
# 执行文件中的SQL语句,将结果写入文件
hive -f hqlfile1.sql >> result1.log
exit; quit;
# 在命令行执行 shell 命令 / dfs 命令
hive> ! ls;
hive> ! clear;
hive> dfs -ls / ;

HIVE数据类型

基本类型

集合类型

HQL常用的一些DDL命令

-- 避免数据库已经存在时报错,使用 if not exists 进行判断【标准写法】
hive (default)> create database if not exists mydb;
-- 查看所有数据库
show databases;
-- 查看数据库信息
desc database mydb2;
desc database extended mydb2;
describe database extended mydb2
-- 使用数据库
use mydb;
-- 如果数据库不为空,使用 cascade 强制删除
drop database databasename cascade ;
默认情况下,创建内部表。如果要创建外部表,需要使用关键字 external
在删除内部表时,表的定义 ( 元数据 ) 和 数据 同时被删除
在删除外部表时,仅删除表的定义,数据被保留
在生产环境中,多使用外部表
-- 创建内部表 加上 external就是外部表  分桶规则:分桶字段 .hashCode % 分桶数
create [ external ] table t1(
id int ,
name string,
hobby array<string>,
addr map<string, string>
)
partitioned by (dt string)
clustered by (id) into 3 buckets
row format delimited
fields terminated by ";"
collection items terminated by ","
map keys terminated by ":" ;
-- 只能 通过 insert ... select ... 给桶表加载数据
insert into table course select * from course_common;
-- 显示表的定义,显示的信息较少
desc t1;
-- 显示表的定义,显示的信息多,格式友好
desc formatted t1;
-- 加载数据
load data local inpath '/home/hadoop/data/t1.dat' into table t1;
-- 加载数据到分区
load data local inpath "/home/hadoop/data/t1.dat" into table t3 partition(dt= "2024-06-01" );
insert overwrite table tabC partition(month= '202403' ) select id, name, area where month= '202402';
import table student2 partition(month= '201709' )
from '/user/hive/warehouse/export/student' ;
-- 删除表。表和数据同时被删除
drop table t1;
-- 内部表转外部表
alter table t1 set tblproperties( 'EXTERNAL' = 'TRUE' );
-- 查询表信息,是否转换成功
desc formatted t1;
-- 外部表转内部表。 EXTERNAL 大写, false 不区分大小
alter table t1 set tblproperties( 'EXTERNAL' = 'FALSE' );
-- 查询表信息,是否转换成功
desc formatted t1;
-- 查看分区
show partitions t3;
-- 增加一个分区,不加载数据 后边加了location就是加载数据
alter table t3 add partition(dt= '2024-06-03' ) partition(dt= '2024-06-06' )
location '/user/hive/warehouse/mydb.db/t3/dt=2024-06-07' ;
--  修改分区的 hdfs 路径
alter table t3 partition(dt= '2024-06-01' ) set location '/user/hive/warehouse/t3/dt=2024-06-03' ;
-- 可以删除一个或多个分区,用逗号隔开
alter table t3 drop partition(dt= '2020-06-03' ), partition(dt= '2020-06-04' );
-- 修改表名。 rename
alter table course_common
rename to course_common1;
-- 修改列名。 change column
alter table course_common1
change column id cid int ;
-- 修改字段类型。 change column
alter table course_common1
change column cid cid string;
-- The following columns have types incompatible with the
existing columns in their respective positions
-- 修改字段数据类型时,要满足数据类型转换的要求。如 int 可以转为 string ,但是
string 不能转为 int
-- 增加字段。 add columns
alter table course_common1
add columns (common string);
-- 删除字段: replace columns
-- 这里仅仅只是在元数据中删除了字段,并没有改动 hdfs 上的数据文件
alter table course_common1
replace columns(
id string, cname string, score int );
-- 删除表
drop table course_common1;
-- 根据查询结果创建表
create table if not exists tabD
as select * from tabC;
-- 将查询结果导出到本地
insert overwrite local directory '/home/hadoop/data/tabC'
select * from tabC;
-- 将查询结果格式化输出到本地
insert overwrite local directory '/home/hadoop/data/tabC2'
row format delimited fields terminated by ' '
select * from tabC;
-- 将查询结果导出到 HDFS
insert overwrite directory '/user/hadoop/data/tabC3'
row format delimited fields terminated by ' '
select * from tabC;
-- hive 命令导出数据到本地。执行查询将查询结果重定向到文件
hive -e "select * from tabC" > a .log
-- export 导出数据到 HDFS 。使用 export 导出数据时,不仅有数还有表的元数据信
息
export table tabC to '/user/hadoop/data/tabC4' ;
-- export 导出的数据,可以使用 import 命令导入到 Hive 表中
-- 使用 like tname 创建的表结构与原表一致。 create ... as select ...
结构可能不一致
create table tabE like tabc;
import table tabE from '' /user/hadoop/data/tabC4 ';
-- 截断表,清空数据。 ( 注意:仅能操作内部表 )
truncate table tabE;
-- 以下语句报错,外部表不能执行 truncate 操作
alter table tabC set tblproperties("EXTERNAL"="TRUE");
truncate table tabC;
-- 查看系统自带函数
show functions;
-- 显示自带函数的用法
desc function upper;
desc function extended upper;

读时模式

在传统数据库中,在加载时发现数据不符合表的定义,则拒绝加载数据。数据在写入
数据库时对照表模式进行检查,这种模式称为 " 写时模式 " ( schema on write )。
写时模式 -> 写数据检查 -> RDBMS ;
Hive 中数据加载过程采用 " 读时模式 " (schema on read) ,加载数据时不进行数据格
式的校验,读取数据时如果不合法则显示 NULL 。这种模式的优点是加载数据迅速。
读时模式 -> 读时检查数据 -> Hive ;好处:加载数据快;问题:数据显示 NULL

感谢阅读!!!

hive在数仓项目中的表格设计 数仓基本机构如下: 在对数仓的分层表格设计中,根据不同的业务需求会使用到不同表格写入方式: ODS 层 1 特殊表(只导入一次) 有些表格的内容通常不会进行进行变化,在数仓中采用特殊表的模式,只在数仓建造初始化的时候导入一次,之后不再进行内容导入:例如省份表和地区表 省份表(特殊) drop table if exists ods_base_province; create external table ods_base_province ( `id` bigint COMMENT '编号 阅读详情

相关推荐

Hive数仓

一、数据仓库 Data Warehouse ,简称数仓,是一个用于存储、分析、报告的数据系统 特点:1.不“产生”任何数据,其数据来源于不同外部系统; 2.不需要“消费”任何的数据,其结果开放给各个外部应用使用。 数据仓库与数据库: 数据库,联机事务处理OLTP(On-Line Transaction Processing),目标为数据处理; 面向事务的设计 一般储存业务数据 数据仓库,联机分析处理OLAP...

weixin_45751466的博客 3318

教育数仓项目——三、数仓工具

Sqoop是Apache下的顶级项目,用来将Hadoop和关系型数据库中的数据相互转移,可以将一个关系型数据库(例如:MySQL,Oracle,PostgreSQL等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中。目前在各个公司应用广泛,且发展前景比较乐观。专门为Hadoop而生,随Hadoop版本更新支持程度好,且原本即是从CDH版本孵化出来的开源项目,支持CDH的各个版本号。它支持多种关系型数据库,比如mysql、oracle、postgresql等。

2301_79748596的博客 1017

数仓工具—Hive初识(1)

Hive数据仓库软件提供了通过SQL 对存储在分布式中的大型数据集的查询和管理,它本身是建立在Apache Hadoop之上,主要提供以下功能

4万+

Hadoop、Hive、Spark的简单认识和总结

前言 在大数据相关的工作和开发中,最常见的就是Hadoop、Hive、Spark这三个框架了,关乎大批量的数据处理,这三个是不二之选。刚开始的时候一直没搞清楚这三者之间的关系,后来随着在工作中的了解和学习,才逐渐弄清楚这三个之间的联系和区别。 Hadoop 首先是Hadoop。Hadoop可以说是大数据处理的基石,其他框架大多数都是以Hadoop为基础,从各个方面的不同角度进行优化和改进而演变而来...

哈哈哈哈哈哈哈 6365

最新数仓面试题_知行教育数仓项目

能否简介一下当前这个项目

Maynor的博客 3822

数仓工具—Hive优化

做数仓的都知道,Hive 的优化或者是HQL 的优化对数仓至关重要,这一节我们将这些优化点一网打尽

4万+

大数据开发基础入门与项目实战(三)Hadoop核心及生态圈技术栈之3.数据仓库工具Hive基础

本文主要介绍了数据仓库工具Hive基础,Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,是将SQL查询语句转化为MR任务进行计算:Hive概述,包括数仓工具Hive的产生背景、数仓工具Hive与RDBMS对比、数仓工具Hive的优缺点和数仓工具Hive的架构原理;Hive安装与配置,包括安装准备、安装MySQL元数据库、Hive的安装与配置、Hive安装的注意事项和参数配置;数据类型与文件格式,包括基本数据类型及转换、集合数据类型和Hive文本文件数据编码及读时模式。

CUFEECR的博客 8877

数仓工具—Hive的架构设计(13)

Hive是构建在分布式计算框架之上的SQL引擎,它重用了Hadoop中的分布式存储系统HDFS/HBase和计算框架MapReduce/Tez/Spark等。Hive是Hadoop生态系统中的重要部分,也是目前应用最广泛的SQL On Hadoop解决方案。

5万+

数仓工具hive概述

数据仓库是为了解决大数据分析而产生的数据存储平台,简称数仓:DW(DataWarehouse),面向分析的集成化数据平台,分析结果给公司提供决策依据。 hive是如何操作数仓的呢?

weixin_44133605的博客 2976

数仓工具—Hive进阶之归档(13)

归档 读者交流群已经开通了,有需要的可以私信进入读者交流群 由于 HDFS 的设计,文件系统中文件的数量直接影响 namenode 中的内存消耗。虽然通常对于小型群集而言不是问题,但是当文件数大于 50 到 1 亿时,内存使用量可能会达到一台计算机上可访问内存的限制。在这种情况下,具有尽可能少的文件是有利的。 关于这一点我们前面也提到过一个解决方案那就是处理小文件,你可以参考Hive进阶之优化小文件问题 使用Hadoop Archives是减少分区中文件数量的一种方法。 Hive 具有内置支持,可将现有

7万+

数仓工具—Hive进阶之StorageHandler(23)

当在Apache Hive中定义和操作表时,涉及到的数据的输入和输出以及数据的序列化和反序列化都需要明确定义,这就是 InputFormat、OutputFormat 和 SerDe 的作用。存储处理程序通过指定合适的 InputFormat、OutputFormat 和 SerDe,定义了与特定存储系统的交互方式。这种设计使得Hive能够适应各种存储系统,并提供了灵活性和可扩展性用于与Hadoop分布式文件系统(HDFS)集成。用于与HBase NoSQL数据库集成。

4万+

数仓入门基础-2-技术栈

1.hive sql >> 五星 在大多数的工作中,主要用的语言就是sql,说难不难,只要做的多了,基本就可以融会贯通,当然也要了解 hive ,清楚常运用到的优化方法。 推荐书籍:《hive权威指南》 技能点: -1.常用的sql 查询语句,select where sum group order常用sql语句,row_number()over等窗口函数使用,ma...

renzhixin1314的博客 825

数仓工具—Hive的编译安装(2)

作为一个大数据开发工程师,基本大大数组件的编译安装你的会,至少你得尝试编译,因为很多时候你都会遇到版本冲突的问题,这个时候你就得去选择合适的依赖版本,然后去重新打包,或者是需要做自定义开发,这个时候你还是需要自己去编译安装...

4万+

【大数据】Hadoop里的“MySQL”——Hive,干货满满

UDF非常滴炫酷。内置函数内置函数SQL也有,最简单的有。

十一月廿七风雨大作 8055

多模态模型评测神器 | OpenCompass MMBench 了解一下!

MMBench 是 OpenCompass 研究团队自建的视觉语言模型评测数据集,可实现从感知到认知能力逐级细分评估。研究团队从互联网公开信息与权威基准数据集采集约 3000 道单项选择题 ,覆盖目标检测、文字识别、动作识别、图像理解、关系推理等 20 个细粒度评估维度。

OpenCompass的博客 7826

当AI学会自我验证:Chain-of-Verification如何杜绝错误决策?

2025年,大模型"幻觉"问题已成为企业落地AI的最大障碍之一——金融风控中1.2%的误判率可能导致千万级损失,医疗诊断中3%的错误可能危及生命,法律文书中5%的事实偏差可能引发合规风险。MetaAI与Google联合提出的**Chain-of-Verification(CoVe,验证链)**技术,让AI具备"自我审视"能力,通过结构化验证流程将幻觉率降低68%+,在复杂决策场景准确率提升至95%+。本文系统拆解CoVe的技术原理、实施路径与行业实战,为企业提供AI决策可靠性保障的完整方案。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1080

数仓工具Hive 概述

简介数仓工具Hive,其架构原理和一些性质

yanghao201607030101的博客 1353

benders分解算法 逻辑思路整理(加星)

一般我们经常可以看到的是经典的benders,此处我也结合经典的benders梳理下思路。

sinat_41348401的博客 7985

数仓知识11:Hadoop生态及Hive、HBase、Impala、HDFS之间的关系

Hive、HBase、Impala、HDFS是Hadoop生态体系中常用的开源产品,各个产品间是一个什么样的关系,许多人都搞不清楚,本文将进行研究分析。

维克先生的博客 3982

[特殊字符]用Python爬取中国裁判文书网案例信息:从爬虫到数据可视化全流程实战(附代码)

✅ 分析裁判文书网的网页结构;✅ 自动化爬取案件信息;✅ 解析加密参数并获取数据;✅ 数据可视化图表输出;✅ 模块化构建爬虫系统。

2201_76125261的博客 2823

innovus:sroute 双层follow pin的做法

根据std cellpower pin的层次可以分成两种情况。

m0_61544122的博客 2726

数仓项目6.0配置大全(hadoop/Flume/zk/kafka/mysql/hive配置)

(1)将apache-flume-1.10.1-bin.tar.gz上传到linux的/opt/software目录下。重命名/opt/module/zookeeper/conf目录下的zoo_sample.cfg为zoo.cfg。(2)解压apache-flume-1.10.1-bin.tar.gz到/opt/module/目录下。在/opt/module/zookeeper/zkData目录下创建一个myid的文件。在/opt/module/zookeeper/目录下创建zkData。

qq_58551342的博客 2064

Python爬虫实战:爬取500+网易云热门歌单,我摸清了全网最火的音乐规律

曲风:流行是主流,“情绪价值”比单纯曲风更重要;歌名:感性、场景化的歌名,更受用户偏爱。这次实战让我明白,Python不是冰冷的代码,而是能帮我们看清生活中隐藏规律的工具。从每天刷的歌单里,用爬虫和数据分析挖出用户的真实偏好,不仅满足了好奇心,还实实在在练会了技能。新手朋友可以从这个项目入手,既练习了爬虫基础,又学会了数据分析的核心逻辑,还能结合自己的音乐兴趣理解数据的意义。现在打开PyCharm,跟着代码跑一遍,你也能从网易云的热门歌单里,挖出属于自己的“音乐规律”!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1888

数仓工具Hive简介、安装及基本使用梳理总结

近几日学习大数据相关内容,将数仓工具Hive简介、原理安装及基本使用进行梳理总结

u012732010的博客 1243

Apifox接口测试+自动化测试

Apifox 接口测试+自动化测试快速入门!

程序员小杨哥的博客 1万+

YOLOv8改进:在C2F模块中引入RepGhost Bottleneck模块

C2F类是YOLOv8中的C2F模块的实现,它包含一个RepGhostBottleneck模块、一个卷积层和一个批归一化层。通过在C2F模块中引入RepGhost Bottleneck模块,我们可以在保持计算效率的同时提升模型的表达能力。这是因为RepGhost Bottleneck模块通过引入重复的卷积核来扩展模型的感受野,从而增加了模型对不同尺度目标的感知能力。RepGhost Bottleneck是一种用于卷积神经网络的改进模块,它可以在保持计算效率的同时提升模型的表达能力。希望以上内容对你有帮助!

IlgCrystal的博客 1306
上一篇: Hadoop技术栈(四)HIVE常用函数汇总
下一篇: Hadoop技术栈(五)HIVE事务、元数据和存储
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值