首页   快速返回

hive     所属分类 bigdata
构建在Hadoop之上的数据仓库,数据计算使用MR,数据存储使用HDFS
类 SQL 查询语言  HQL

数据存储 hdfs
数据格式 用户指定 
列分隔符 行分隔符 存储格式 

四种存储格式
TextFile
RCFile
ORCFile
Parquet

 hive四种存储格式 

延迟高   全表扫描 + MR 机制 


元数据存储(metastore)
derby  MySQL 
表与分区信息 列信息 序列化与反序列化器 等


数据模型
database table partition bucket
内部表 /分区表 /外部表 /桶表 
视图
一个Table 对应一个目录
一个Partition对应表的一个子目录
桶表 hash运算 放在不同的文件中

内部表 管理表  
数据保存到 Hive 自己的数据仓库目录中:/usr/hive/warehouse
hive.metastore.warehouse.dir

外部表
External Table 需要指定数据读取的目录,而内部表创建的时候存放数据到默认路径,
内部表将数据和元数据全部删除,外部表只删除元数据,数据文件不会删除。
外部表加载数据和创建表同时完成,不会移动到数据仓库目录中。



模块 
用户接口 CLI,JDBC/ODBC,WebUI
元数据存储(metastore) derby MySQL
驱动器(Driver)解释器、编译器、优化器、执行器
Hadoop HDFS存储 MapReduce计算


Partition 和Bucket 
Partition
        为减少不必要的暴力数据扫描,可以对表进行分区
        为避免产生过多小文件,建议只对离散字段进行分区
Bucket
        对于值较多的字段,可将其分成若干个Bucket
        可结合Partition与Bucket使用

select语句
        不支持having和exist in操作, 可转换为LEFT SEMI JOIN操作
        Join(仅支持等值连接),不支持非等值的连接

Order by 和 Sort by 
Order by
        启动一个reduce task
        数据全局有序
        速度可能会非常慢
        Strict模式下,必须与limit连用
Sort by
        可以有多个reduce task
        每个Reduce Task内部数据有序,但全局无序
        通常与distribute by

Distribute by 与 Cluster by

distribute by
        相当于MapReduce中的paritioner,默认基于hash实现
        与sort by连用,可发挥很好的作用
cluster by
        相当于distribute by与sort by(降序)连用, 字段相同时,可用cluster by简写


下一代Hive   Stinger   计算引擎用Tez替换MapReduce
Tez对比MapReduce的优势
提供了多种算子(比如Map、Shuffle等)供用户使用;
将多个作业合并成一个作业,减少磁盘读写IO;
充分利用内存资源。

上一篇     下一篇
Zookeeper在HBase中的应用

elasticsearch中的DocValues

zab协议

HIVE数据模型

spark

5G简介