Hive基础小结
慕课网基础教程推荐:
数据仓库概念、特点:
数据仓库是一个面向主体的、集成的、不可更新的、随时间不断变化的数据集合,
它用于企业或组织的决策分析处理。
数据仓库结构和建立过程:
数据源(业务数据系统、文档资料、其他数据)--> 抽取(Extract)、转换(Transform)、装载(Load)--> 数据仓库引擎(服务器)--> 前端展示(查询、报表、分析、各类应用)
Hive概念:
- 建立在HDFS之上的数据仓库。
- 一个HDFS上的SQL引擎,将SQL查询语句转变为一个HDFS之上的Job,进行MapReduce运算。
- 可以用来进行数据ETL。
- Hive表其实就是HDFS的目录/文件。
Hive元数据:
- Hive将元数据存储在数据库中(mysql、derby等)
- 元数据包括表的名称,列和分区及其属性,表所在的HDFS下的目录等。
Hive访问接口:
- CLI
- JDBC/ODBC
- Web Console
HQL执行过程:
- 解释器:词法分析
- 编译器:生成HQL的执行计划
- 优化器:生成最佳执行计划(MapReduce)
- 执行
Hive基本数据类型:
基本数据类型:
- tiny/smallint/int/bigint
- float/double
- boolean
- string
复杂数据类型(可嵌套):
- Array(exm: array< float >)
- Map(exm: map< string, string >)
- Struct(exm: struct< name:string, age:int, sex:string >)
时间类型:
- Date(Since Hive0.12.0)
- Timestamp(Since Hive0.8.0)
Hive表:
默认使用逗号(,)分隔符
- 内部表:可用查询语句配合as创建内部表
- 分区表:
通过条件将表分区:
# 根据gender分表
create table patition_t
(sid int, sname string, gender string)
patitioned by (gender string)
row format delimited fields terminated by ',';
# 插入一条数据
insert into patition_t patition(gender='M') select sid, sname from sample_data where gender='M';
- 外部表:指向已经在HDFS中存在的数据,可以创建Patition;外部表只是一个过程,并不会移动到数据仓库目录中,只是与外部数据建立一个链接。借助location关键字建立外部表。
- 桶表:对数据进行哈希取值,然后放到不同文件中存储。建表语句:create….clustered by([property]) into [n] buckets。
- 视图:虚表,与一般关系型数据库的视图概念相似。
#创建视图
create view my_view
as
select ...
关系型数据库可以物化视图,而Hive不可以。