一、什么是Hive
1基于Hadoop的数据仓库解决方案
2将结构化的数据文件映射为数据库表
3提供类sql的查询语言HQL
二、Hive的优势和特点
1、提供了一个简单的优化模型
2、HQL类SQL语法,简化MR开发
3、支持在不同的计算框架上运行
4、支持用户自定义函数
三、Hive元数据管理
默认由 Derby数据库管理
实际用Mysql,修改配置文件hive-site.xml
四、原始数据类型
类型 | 示例 | 类型 | 示例 |
TINYINT | 10Y | SMALLINT | 10S |
INT | 10 | BIGINT | 100L |
FLOAT | 1.342 | DOUBLE | 1.234 |
DECIMAL | 3.14 | BINARY | 1010 |
BOOLEAN | TRUE | STRING | 'Book’ or “Book” |
CHAR | 'YES’ or “YES” | VARCHAR | 'Book’ or “Book” |
DATE | '2013-01-31’ | TIMESTAMP | '2013-01-31 00:13:00.345’ |
五、复杂数据类型
ARRAY:存储的数据为相同类型
MAP:具有相同类型的键值对
STRUCT:封装了一组字段
类型 | 格式 | 定义 | 示例 |
ARRAY | [‘Apple’,’Orange’,’Mongo’] | ARRAY<string> | a[0] = ‘Apple’ |
MAP | {‘A’:’Apple’,’O’:’Orange’} | MAP<string, string> | b[‘A’] = ‘Apple’ |
STRUCT | {‘Apple’, 2} | STRUCT<fruit:string, weight:int> | c.weight = 2 |
六、Hive元数据结构
数据结构 | 描述 | 逻辑关系 | 物理存储(HDFS) |
Database | 数据库 | 表的集合 | 文件夹 |
Table | 表 | 行数据的集合 | 文件夹 |
Partition | 分区 | 用于分割数据 | 文件夹 |
Buckets | 分桶 | 用于分布数据 | 文件 |
Row | 行 | 行记录 | 文件中的行 |
Columns | 列 | 列记录 | 每行中指定的位置 |
Views | 视图 | 逻辑概念,可跨越多张表 | 不存储数据 |
Index | 索引 | 记录统计数据信息 | 文件夹 |
分区和分桶的区别:都是用于分割数据,为了提高查询效率,区别是分区在HDFS表现为一个表文件夹下的子文件夹,分桶表现为同一目录下的文件。