Hive 和数据库比较
由于
Hive
采用了类似
SQL
的查询语言
HQL(Hive Query Language)
,因此很容易将
Hive 理
解为数据库。其实从结构上来看,
Hive
和数据库除了拥有类似的查询语言,再无类似之处。
本文将从多个方面来阐述
Hive
和数据库的差异。数据库可以用在
Online
的应用中,但是
Hive
是为数据仓库而设计的,清楚这一点,有助于从应用角度理解
Hive
的特性。
4.1
查询语言
由于
SQL
被广泛的应用在数据仓库中,因此,专门针对
Hive
的特性设计了类
SQL
的查
询语言
HQL
。熟悉
SQL
开发的开发者可以很方便的使用
Hive
进行开发。
4.2
数据更新
由于
Hive
是针对数据仓库应用设计的,而
数据仓库的内容是读多写少的。
因此,
Hive
中
不建议对数据的改写,所有的数据都是在加载的时候确定好的。
而数据库中的数据通常是需
要经常进行修改的,因此可以使用
INSERT INTO … VALUES
添加数据,使用
UPDATE … SET
修 改数据
4.3
执行延迟
Hive
在查询数据的时候,由于没有索引,需要扫描整个表,因此延迟较高。另外一个导
致
Hive
执行延迟高的因素是
MapReduce
框架。由于
MapReduce
本身具有较高的延迟,因此
在利用
MapReduce
执行
Hive
查询时,也会有较高的延迟。相对的,数据库的执行延迟较低。
当然,这个低是有条件的,即数据规模较小,当数据规模大到超过数据库的处理能力的时候,
Hive
的并行计算显然能体现出优势。
4.4
数据规模
由于
Hive
建立在集群上并可以利用
MapReduce
进行并行计算,因此可以支持很大规模
的数据;对应的,数据库可以支持的数据规模较小。