Hive
解释:面向分析的存储系统;面向主题的、集成的、不可修改的、反映历史变化的数据集合。
与数据库的对比分析:
主要联系:都是用来存储数据,数据仓库是数据库的衍生,两者数据交互,都不能取代对方。
主要区别:数据库面向事务的设计,数据仓库面向主题的设计。
数据仓库实时性弱但存储空间庞大,数据库反之。
数据库实时性强吞吐量弱,数据仓库吞吐量强实时性弱。
定义:Hive是建立在Hadoop上的数据仓库基础架构和解决方案。
架构:支持拿来即用,亦支持灵活的参数和计算引擎的变更。
基本使用:
进入:
输入 hive 进入hive cli
use 用户名;
常用命令:
show databases; 查看所有数据库
create database 数据库名; 创建数据库
use 数据库名; 选择数据库
show tables; 查看库中所有表
create table 表名(id int,name string); 创建一个表
insert into 表名 values(1,“one”); 插入数据
!exit 或者 !quit; 退出
数据模型:表——>分区——>分桶
分区:按照指定的字段(这个字段是一个虚拟的字段),
hive在底层存储的时候会按照分区字段创建对应的目录进行数据存储。
分桶:在分区内,按照指定字段(表中实际存在的字段)的hash值组织数据,
目的是为了提升指定的字段的查询效率。
文件存储格式:行式存储和列式存储
行式存储:
.txt(文本文件格式):学习联系使用
.seq(序列文件格式):kv存储,生产、map输出使用
列式存储:(优势在数据分析)
.rc:效率高,学习、生产均可用
.orc:进一步提高效率
文件压缩格式:分为可切分和不可切分
可切分:
.lzo:速度快、压缩率低。
.bz2:压缩率高,速度一般。
不可切分:
.gzip:速度快,但挑cpu,适合小文件。
.snappy:速度快,但压缩率低,适合mr或者job数据流中间数据传输格式。
HiveSQL:
1.DDL:
内表:元数据和数据本身均被hive管理。删除表则全部删除。
外表:元数据被hive管理,数据本身存储在hdfs,不受hive管理。
删除表则只删除元数据,数据本身不变。
查看已有表信息:show create table 表名 或者 tablename/desc formatted 表名;
更改表:alter table 表名 rename to 新表名;