Hive核心:Hive数据管理包括:
(1) 元数据存储 :Hive将元数据存储在RDBMS中,如Derby,MySQL
客户端利用 Thrift 协议通过MetaStoreServer来访问元数据库
(2) 数据存储 :hive中所有的数据都存储在HDFS中,大部分的查询由MapReduce完成。用户可以非常自由地组织Hive中的表,只需要在创建表的时候告诉Hive数据中的列分割符和行分隔符就能解析数据。
Hive包含4种数据模型:
例如有一张表叫accesslog,按event_day进行分区,hive的在HDFS上的数据存储地址为/user/hive/warehouse
类型 | 说明 |
Table | 表;表创建的操作包括两个步骤: (1)表创建过程 (2)数据加载过程:实际数据会移动到数据仓库目录中,之后的数据访问将会直接在数据仓库目录中完成。在删除表时,表中的数据和元数据将会被同时删除 在HDFS上的存储路径为 /user/hive/warehouse/accesslog |
External Table | 外部表;表创建的操作只有一个步骤:加载数据和创建表同时完成,实际数据存储在创建语句LOCATION指定的HDFS路径中,并不会移动到数据仓库目录中。如果删除一个外部表,仅删除元数据,表中的数据不会被删除 |
Partition | 分区;类型索引 在HDFS上的存储路径为 /user/hive/warehouse/accesslog/event_day=20150512/ |
Bucket | 桶;对指定 列 进行hash计算时,会根据hash值切分数据,使每个桶对应一个文件 在HDFS上的存储路径为 /user/hive/warehouse/accesslog/event_day=20150512/part-00010 |
(3) 数据交换 :有三种接口:客户端、数据库接口和web界面