Hive的存储结构学习

    在实际进行大数据分析时,由于某些时候需要即席查询,对性能要求很高。此时有多种方案可选,比如采用Spark,Impala,Phoenix,Tez等都是可以选择。但在底层的数据存储结构上,一般都是借助于Hive的数据存储结构。因此需要学习下Hive本身的数据是如何存储的。

    Hive中的基本概念有Table,Extenal Table,Parition,Bucket等。其中最关键的是Table和Partition.

    Hive中的Table和关系型数据库中的Table概念类似,都有表名,字段名和字段类型的属性。

    Partition的概念则不同于关系型数据库中的索引。Partition在Hive中表现为Table下面的子目录树。Partition的列,并不保存在Table中,而是伪列,即原始数据中并没有Partition的列。

   Partition既可以是Static的,也可以是Dynamic的。Static是指分区预先创建好,Dynamic则指分区动态创建。在实际使用中,由于源数据并不确定,因此更为灵活的方式是使用Dynamic来创建分区。

   为提高效率,一般使用Load Data或者Load Local Data来加载数据,此时是将文件直接copy到对应的Partition下面。

   Partition,有点类似于多级索引,显然可以大大提升查询的效率,因为使用Partition后,查询可以直接在小范围内进行。

   对于有保存时间要求的系统,如果按照日期进行Partition,对于维护就比较简单,可以直接删除过期的分区即可。删除分区后,元数据和分区数据会一并删除。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值