一、hive概念
hive:面向数据分析的存储系统
数据仓库和数据库对比分析
关系:
- 两者均是用来存储数据的,即均为数据的存储载体。
- 数据仓库也是数据库,是数据库的一种衍生、延深应用。
- 数据仓库的出现,并不是要取代数据库,且当下大部分数据仓库还是用关系数据库管理系统来管理的,即数据库、数据仓库相辅相成、各有千秋。
区别:
- 数据库是面向事务的设计,数据仓库是面向主题设计的。
- 数据库是为捕获数据而设计,即实时性强吞吐量弱,数据仓库是为分析数据而设计,即吞吐量强实时性弱。
- 数据库设计是尽量避免冗余,数据仓库在设计是有意引入冗余。
- 数据库一般存储在线交易数据,实时性强存储空间有限,数据仓库存储的一般是历史数据,实时性弱但存储空间庞大。
二、hive架构设计
1.hive cli
shell输入hive 进入hive cli
查看所有数据库: show databases;(所有命令记得打分号)
创建数据库:create database 库名;
跟sql语句差不多
2.架构设计
User interface 用户接口
Hive CLI 在shell中用命令行执行,代码简单,功能也简单;
Hive Client 需要编写java或其他语言代码,一般是两者结合使用;
HWI 基本没人用;
HiveServer2相当于一个转接器,实现跨语言接口调用;
三、hive基础应用
1.hive数据模型
2.数据操作分类
DDL:
•建表
•删除表
•修改表结构
•创建/删除视图
•创建数据库
•显示命令
- external: 创建内部表还是外部表,此为内外表的唯一区分关键字。
- comment col_comment: 给字段添加注释
- comment table_comment: 给表本身添加注释
- partitioned by: 按哪些字段分区,可以是一个,也可以是多个
- clustered by col_name... into num_buckets BUCKETS:按哪几个字段做hash后分桶存储
- row format:用于设定行、列、集合的分隔符等设置
- stored as : 用于指定存储的文件类型,如text,rcfile等
- location : 设定该表存储的hdfs目录,如果不手动设定,则采用hive默认的存储路径
hive的内外表
概念说明:
- Hive将表的分类共2类,即内外表。
- 以元数据和实体数据的操作权限作为分类依据。
- Create [external] table …… 加external
- 应用场景
- 数据表生成时,如果是hive内部自生成的表则统一设置内表,如果不是自生成的,而是外部导入的,则设置为外表。
- 特点特征
- 外表:元数据归Hive管,实体数据不归Hive而是归Hdfs,删表的话,只会删除Hive元数据,不会改变实体数据。
- 内表:元数据和实体数据全归Hive管理,一删全删。
视图:
查看所有视图show views;
DML:
•数据插入
加载数据脚本:
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)](新hive已不支持本地传输)
DQL:
•数据查询(select)