招聘岗位上到处都要求熟练的Hive究竟是何方神圣?
2020-04-15 本文已影响0人
及未来
简介
Hive是基于Hadoop的数据仓库大数据组件。将易上手的SQL语句转化成MapReduce作业。
数据结构
-
元数据
Hive存储的是一张张的数据表,而元数据就是其中的表结构;
存储形式:存于Derby数据库,或MySQL,Oracle数据库。 -
表数据
表中存储的数据。
存储形式:每张表存于HDFS中的一个目录中;
数据类型
- 基本数据类型
- tinyint / smallint / int / bigint : 整数类型
- float / double : 浮点数类型
- boolean : 布尔类型
- string : 字符串类型
- 复杂数据类型
- Array : 数组类型
- Map : 集合类型,键值对Key / Value形式
- Struct : 结构类型,包含不同数据类型的元素,跟C语言中的Struct类似
- 时间数据类型
- Date : 只包含到天的数据,没法精确到时分秒。
- Timestamp : 长整型数字,从(格林威治时间)1970年1月1日0时0分0秒到现在的总毫秒数
数据模型
MySQL,Oracle用表作为数据模型存储数据。Hive自然也有。下面简要介绍一下Hive的几种常用的表吧。
- 内部表
最接近普通关系型数据库的数据模型;
删除数据时会将元数据与表数据一同删除,HDFS中的数据文件一同被删除;
create table bucket_table
(sid int, sname string, age int)
row format delimited fields terminated by '\t';
-- 指定数据间分隔符,默认为制表符'\t'
- 外部表
与HDFS中某个目录下的数据文件建立连接;
比较像指针,指向HDFS中某个目录;
删除数据时,会删除元数据,与该目录的连接,但不会真正删除HDFS中的数据;
create external table external_student
(sid int, sname string, age int)
row format delimited fields terminated by '\t'
location '/input'; --指定表数据所在 HDFS目录
- 桶表
用哈希算法将表数据分到5个桶中,一般可以将数据打乱放到各个桶中,可以处理数据倾斜问题
create table bucket_table
(sid int, sname string, age int)
clustered by(sname) into 5 buckets --将数据通过哈希算法分成5部分
row format delimited fields terminated by '\t';