Hive基础

Hive是基于Hadoop构建的一套数据仓库分析系统,它提供丰富的SQL查询方式来分析存储在Hadoop分布式文件系统中的数据。Hive将数据存储在数据仓库中,通过自己的SQL去查询分析数据内容,这套SQL简称HiveSQL。它与关系型数据库的SQL略有不同,但支持绝大多数的语句,如DDL、DML以及常见的聚合函数、连接查询、条件查询。

Hive主要包括以下几个部分:

1)       用户接口:CLI,Client和WUI,用户通过用户接口访问Hive。

2)       元数据存储:Hive通常部署在多用户环境中,为了避免每个用户在不同的地方建立不同的元数据,需要一个共享的数据库服务器,其上创建一个符合JDBC的数据库作为Hive的元数据存储数据库metastore_db,然后将Hive的安装配置都指向它即可。

3)       解释器、编译器、优化器、执行器:解释器、编译器、优化器完成HiveQL查询语句从词法分析、语法分析、编译、优化性能以及查询计划的生成。最后将生成计划,由执行器调用程序执行。

4)       Hadoop:由解释器、编译器、优化器生成的计划存储在HDFS中,执行器调用MapReduce程序完成语句的调用分析。

与普通数据库的关系:

查询语言不同。普通关系数据库采用SQL查询语言,而Hive有专门针对自己特性开发的类SQL的HiveQL语言。

1)       数据存储位置不同。Hive的数据存储在HDFS中,普通的关系数据库则将数据保存在本地文件系统或块中。

2)       数据格式不同。Hive没有定义专门的数据格式,用户自己定义数据格式及读取文件数据的方法。所以,在数据加载入Hive时不需要对数据本身做任何改变。而普通的关系数据库有固定的数据格式以及各自的存储引擎。所有数据按照数据格式组织存储,加载的过程也会比较耗时。

3)       数据更新不同。Hive是Hadoop基础上的数据仓库架构,其中的内容时读多写少的,故Hive不支持数据的添加和改写,加载数据时,数据就已被确定。而普通的关系数据库中的数据经常需要修改,因此有固定的SQL语言实现数据的添加和修改。

4)       索引不同。如上所述,Hive加载数据时不对数据进行修改和扫描,所以,也没有对数据的key建立索引。Hive采用“分区”或者“分桶”等来加快访问数据的速度,因此对于少量特定条件数据的访问,数据库有很高的效率以及较低的延迟。这也是Hive不适合在线查询数据的原因。

5)       执行方式不同。Hive查询的执行是通过MapReduce实现。普通关系数据库有自己的执行引擎。

6)       执行延迟不同。对于小规模的数据,Hive无法体现其MapReduce分布式计算的特点,且MapReduce本身具有较高的延迟,Hive没有索引,故执行延迟较高,普通关系数据库相比有较低的执行延迟。但对于大规模数据,Hive相比普通数据库,延迟较低。

7)       可扩展性不同。Hive的可扩展性和Hadoop的可扩展性是一致的,几千台甚至上万台。

8)       数据规模不同。Hive倾向于处理大规模的数据,普通数据库可支持的数据规模较小。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值