由于Hive采用了类似SQL的查询语言HQL,因此很容易将hive理解为数据库。其实从结构上看,hive和数据库除了拥有类似的查询语言,再无类似之处。数据库可以用在Online的应用中,但是hive是为了数据仓库而设计的,清楚这一点,有助于从应用角度理解HIve的特性。
1.查询语言
由于sql被广泛的应用在数据仓库中,因此,专门针对hive的特性设计了类sql的查询语言hql。
2.数据更新
hive是针对数据仓库设计的,而数据仓库的内容是读多写少。因此,Hive中不建议对数据的改写,所有的数据都是在加载的时候确定好的。而在数据库中的数据 通常是需要经常进行修改的,因此可以使用insert添加数据,使用update修改数据。
3.执行延迟
hive在查询数据的时候,由于没有索引,需要扫描整个表,因此延迟比较高。另外一个原因是mapreduce框架,由于mapreduce本身既有较高的延迟,在利用mapreduce执行hive查询的时候,会有较高的延迟。
4.数据规模
由于hive建立在集群上并且可以利用MapReduce进行并行计算,因此可以支持很大规模的数据,相应的,数据库可以支持的数据规模较小。