Hive与传统的关系型数据库的区别

Hive admin 2年前 (2018-11-08) 452次浏览 0个评论 扫描二维码

1、数据量

hive存储的数据量比较大,适合海量数据,适合存储轨迹类历史数据,适合用来做离线分析、数据挖掘运算,

事务性较差,实时性较差

rdbms一般数据量相对来说不会太大,适合事务性计算,实时性较好,更加接近上层业务

2、计算引擎

hive的计算引擎是hadoop的mapreduce,存储是hadoop的hdfs文件系统,

rdbms的引擎由数据库自己设计实现例如mysql的innoDB,存储用的是数据库服务器本地的文件系统

3、扩展性

hive由于基于hadoop所以存储和计算的扩展能力都很好,

rdbms在这方面比较弱,比如orcale的分表和扩容就很头疼

4、实物支持INSERT、UPDATE和DELETE

hive表格没有主键、没有索引,适合对批量数据的操作,从Hive 0.14开始,可以通过INSERT、UPDATE和DELETE支持,但是需要配置。

hive.support.concurrency = true
hive.enforce.bucketing = true
hive.exec.dynamic.partition.mode = nonstrict
hive.txn.manager = org.apache.hadoop.hive.ql.lockmgr.DbTxnManager
hive.compactor.initiator.on = true
hive.compactor.worker.threads = 1
如果要支持delete和update,则必须输出是AcidOutputFormat然后必须分桶。 
而且目前只有ORCFileformat支持AcidOutputFormat,不仅如此建表时必须指定参数('transactional' = true) 

更新的话一般是先删除表然后重新落数据

rdbms事务性强,有主键、索引,支持对具体某一行的增删改查等操作

## 5、SQL语句
hive的SQL为HQL,与标准的RDBMS的SQL存在有不少的区别,相对来说功能有限

rdbms的SQL为标准SQL,功能较为强大。

6、加载数据

Hive在加载数据时候和rdbms关系数据库不同,hive在加载数据时候不会对数据进行检查,也不会更改被加载的数据文件,

而检查数据格式的操作是在查询操作时候执行,这种模式叫“读时模式”。在实际应用中,写时模式在加载数据时候会对列进行

索引,对数据进行压缩,因此加载数据的速度很慢,但是当数据加载好了,我们去查询数据的时候,速度很快。但是当我们的

数据是非结构化,存储模式也是未知时候,关系数据操作这种场景就麻烦多了,这时候hive就会发挥它的优势。

 rdbms里,表的加载模式是在数据加载时候强制确定的(表的加载模式是指数据库存储数据的文件格式),如果加载数据

时候发现加载的数据不符合模式,关系数据库则会拒绝加载数据,这个就叫“写时模式”,写时模式会在数据加载时候对数据模

式进行检查校验的操作。


codeobj , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Hive与传统的关系型数据库的区别
喜欢 (1)
[a37free@163.com]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址