hive
什么是Hive ?
Hive是构建在hadoop HDFS上的一个数据仓库;
Hive的表/数据 就是HDFS中目录/文件
数据仓库:
- 是一个面向主题的、集合的、不可更新的、随时间不变化的数据集合;
- 主要是用于支持企业或组织的决策分析处理
数据仓库的结构和建立过程
抽取E:把数据源的数据按照一定的方式进行读取
转换T:将不同格式的数据按照一定的规则进行转化
装载L:将满足格式的数据存在数据仓库中
OLTP应用和OLAP应用:
- OLTP连接事务处理:(比如银行转账),操作频率高,事务的处理
- OLAP连接分析处理:(比如商品推荐系统) 基于原来的历史数据,提供给别的系统使用,一般不会更新插入数据
数据仓库中的数据模型:
- 星型模型:以主题为核心,进行关联
- 雪花模型: 基于星型模型上发展
什么是Hadoop ?
-
什么是HDFS
-
什么是mapreduce
-
Hadoop中的一些基本操作
Hive的体系结构
Hive的元数据:
- Hive将元数据存储在数据库中(metastore),支持MySQL,Derby等数据库
- Hive中元数据 包括 表的名字,表的列,和 分区及其属性,表的属性(是否为外部表等),表的数据所在目录等
HQL语句的执行过程
Hive的安装
下载地址:http://archive.apache.org/dist/hive/
先安装Hadoop的环境,才能再安装Hive的安装
嵌入模式的安装
- 元数据信息被存储在Hive自带的Derby数据库
- 只允许创建一个连接
- 多用于Demo
本地模式的安装
- 元数据信息被存储在Mysql数据库
- MySQL数据和Hive运行在同一台物理机上
- 可以用于开发和测试
远程模式的安装
- 常用于生成环境
- MySQL和Hive运行在不同的操作系统上
Hive的管理方式
- 命令行CLI方式: 可以进入命令行,然后执行一些命令即可
- 远程服务启动
- web界面方式
常用的HQL语句
查询语句:https://docs.jboss.org/hibernate/orm/3.5/reference/zh-CN/html/queryhql.html
Hive的数据类型
- 基本数据类型:
- 整数类型:tinyint/smallint/int/bigint
- 浮点数类型:float/double
- 布尔类型:boolean
- 字符串类型:string
- 复杂数据类型
- Array
- map:格式是key-value格式,key相同时,value被覆盖
- struct:结构类型,包含不同数据类型的元素,可以通过”点语法“的方式来获取到所需要的元素
- 时间数据类型
- date:日期
- timestamp:偏移量,跟时区无关
示例:
创建表,
create table student (sid int, sname string, grade array<float>, id map<string,int>, info struct<name:string,age:int,sex:string>);
sid和sname是基本数据类型,grade是复杂数据类型Array,info是结构数据,id是map,grade是数组array
查看表结构,
desc student;
Hive数据模型
内部表
- 与数据库中的table在概念上是类似的
- 每一个table在hive中都有一个相对应的目录存储数据
- 所有的table数据(不包括外部表)都保存在这个目录中
- 删除表时,元数据和数据都会被删除
分区表
- partition对应于数据库的partition列的密集索引
- 在hive中,表中的一个partition对应于表下的一个目录,所有的partition的数据都存储在对应的目录中
外部表
- 外部表 是一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个连接。当删除一个外部表,就是删除该连接
桶表
- 桶表是对数据进行哈希取值,然后放在不同文件中进行存储
视图
- 视图是一种虚表,是一个逻辑概念;可以跨越多个表
- 视图简历在已有表的基础上,视图赖以建立的这些表,成为基表
- 视图可以简化复杂的查询
Hive和数据库的区别
Hive和数据库除了查询语言类似,其他都不一样
- 存储位置:Hive存储在HDFS,MySQL存储在本地文件系统
- 数据更新:MySQL有update操作,增删改查很方便也很快;Hive 是读多写少,不建议对数据的改写,所有数据都是在加载时候确定好的。
- 索引:HIve没有索引,扫描整个数据,所以延迟比较高,不适合在线数据查询。由于mapreduce的引入,Hive其实也是能并行访问数据。而数据库,可以建立索引。
- 执行:数据库是有自己的执行引擎;Hive是Hadoop提供的MapReduce实现的。
- 执行延迟:Hive延迟高; MySQL数据量小时,延迟比较低
- 数据规模:Hive 可以支持很大规模;数据库支持的数据规模比较少
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤