Hive的数据存储模型

        Hive的存储是建立在Hadoop文件系统之上的,Hive本身没有专门的数据存储格式,也不能为数据建立索引,因此可以自由的组织Hive中的表。在创建表的时候只需要告诉Hive数据中的列分隔符和行分隔符就可以解析数据。

        Hive中主要包含四类数据模型:表,外部表,分区和桶。

表:

        Hive中的表和数据库中的表在概念上是类似的,在Hive中每一个表都有一个对应的存储目录。在配置文件hive-site.xml中hive.metastore.warehouse.dir指定的就是数据仓库的目录,所有的表数据,除了外部表都保存在这个目录中。

外部表:

        外部表指向已经在HDFS中存在的数据,也可以对外部表创建分区。外部表和表在元数据的组织上是相同的,在实际数据的存储存在差异:
        (1)创建表的操作包含两个步骤:表创建过程和数据加载过程,一般情况下先创建表再加载数据,当然这两个过程也可以在同一个语句中完成。在数据加载过程中,实际的数据会移动到数据仓库的目录下,之后的数据访问会直接在数据仓库目录中完成。在删除表时,表中的数据和元数据将会被同时删除。
        (2)外部表的创建只有一个步骤,加载数据和创建表同时完成,实际数据存储在创建语句LOCATION指定的HDFS路径中,并不会移动到数据仓库目录中。如果删除一个外部表,仅删除元数据,表中的数据并不会被删除。

分区:

        Hive中的每一个分区都对应数据库中相应分区列的一个索引,但是其分区列的组织方式和传统的关系型数据库不同。在Hive中,表中的一个分区对应表下的一个目录,所有分区的数据都存在对应的目录中。

        桶在对指定列进行HASH计算时,会根据hash值切分数据,使每一个桶对应一个文件。




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值