hive基础

一、  hive介绍

     Hive是一个中间工具。它的主要作用是将HQL(Hive Query Language)转换为一系列的MapReduce Job,利用Hadoop框架对数据进行类SQL处理。他的主要功能是在Hadoop框架上提供一个类SQL中间层,简化在Hadoop框架上实现SQL功能程序的编写。   

     1) 首先,Hive需要提供一种功能,将待处理的数据加载到HDFS当中。之所以要提供这种功能,是因为,Hadoop想要充分发挥其分布式特性,就需要底层分布式文件系统HDFS的支持。因此,只有将数据保存在HDFS当中才能充分发挥Hadoop的优势。

     2) 其次,Hive将数据加载到HDFS之后,需要提供对数据进行组织管理的功能。如果不提供数据的组织管理功能,那么其跟HDFS存储文件没有区别。
     3) 第三,Hive提供将HQL(Hive Query Lanuage)转化成MapReduce Job的功能。

二、Hive数据组织
1:元数据
    Hive在逻辑上将数据组织为表的形式(因为,Hive在数据加载并不进行数据检验,这就要求用户写入的数据确实符合用户想要的表结构)。既然是表结构,那么就需要定义的表的模式(即Schema)。Hive同样需要Schema,但是与数据文件不同的是,Hive将Schema存储在metastore当中,metastore为关系型数据库(RDBMS)。之所以采用RDBMS作为schema的存储,主要是为了加快schema的存取速度,减少延迟。
2:数据文件
    对于数据文件的存储。最简单的方法,数据直接以文件的格式存放在Hadoop的文件系统当中,包括(HDFS、amazon’s s3、local file system等)。但是为了加快数据存取速度,Hive采用了一些技巧加强对数据组织、存放的管理。
3:分区
    Hive可以对数据按照某列或者某些列进行分区管理,所谓分区我们可以拿下面的例子进行解释。当前互联网应用每天都要存储大量的日志文件,几G、几十G甚至更大都是有可能。存储日志,其中必然有个属性是日志产生的日期。在产生分区时,就可以按照日志产生的日期列进行划分。把每一天的日志当作一个分区。
    将数据组织成分区,主要可以提高数据的查询速度。用户存储的每一条记录具体放到哪个分区,由用户决定。即用户在加载数据的时候必须显示的指定该部分数据放到哪个分区。
4:桶
    对于每一个表(table)或者分区,Hive可以进一步组织成桶。Hive也是针对某一列进行桶的组织。Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中。采用桶能够带来一些好处,比如JOIN操作。对于JOIN操作两个表有一个相同的列,如果对这两个表都进行了桶操作。那么将保存相同列值的桶进行JOIN操作就可以,可以大大较少JOIN的数据量。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值