Hive和不同关系型数据库的差异

Hive采用了SQL的产应语言HQL,因此很容易理解为数据库。Hive和数据库除了拥有类似的查询语言,接下来就阐述Hive 和数据库的差异。

数据库可以在Online的应用中,但是Hive是为数据仓库设计。

查询语言:由于SQL被广泛的应用在数据仓库中,因此针对Hive的特征设计了类SQL的查询语言HQL。

数据存储位置:Hive是建立在Hadoop之上的,所有Hive的数据都是存储到HDFS中的。

                        而普通数据库则将数据保存到块设备或者本地文件系统中。                                               

数据格式:Hive中没有定义专门的数据格式,数据格式根据客户需求自己指定,有需要三个属性:列分隔符,

行分隔符以及读取文件数据的方法。由于在加载数据的时候不需要从用户数据格式到Hive定义是数据格式,因

在加载数据的时候不需要对数据本身进行任何修改,只是将数据内容复制或者移动到HDFS目录中。

普通数据库都会有自己的储存引擎,定义自己的数据格式,所以用到普通数据库时数据都会按照一定的组织存储,

所以数据加载的时候会比较耗时。

               注:(列分隔符通常为空格,“\t”,"\x001"  行分隔符“\n”   默认的文件格式  TextFile, SequenceFile以及RCFile)

数据更新:hive数据库是针对数据仓库设计的而数据仓库的内容是读多写少,因此hive中不支持对数据的改写和添加

所有的数据都是加载的时候被确定好。而普通数据库可以进行修改,因此可以使用INSERT INTO ..VALUES添加数据,

使用UPDATE..SET修改数据。

索引:hive是不对数据进行任何处理的甚至不对数据进行扫描,因此也没有对数据某些Key简历索引。hive要访问数据中满足条件是需要暴利扫描整个数据,因此广泛问延迟较高。由于MapReduce的引入Hive可以并行访问数据,因此即使没有索引对于大数据的访问,hive仍然会体现优势。普通数据库中通常是对一个或者几个简历索引,因此对于少量的特定的数据的访问数据库效率高,较低的延迟。



hive的基本组件;大体分为以下几部分:用户接口(UI),驱动,编译器,元数据(Hive系统参数数据)和执行引擎。

用户接口UI包括:命令行CLI,WEB界面,JDBC/ODBC接口;

驱动: 接收用户提交的查询的HQL

编译器: 解析查询语句,执行语法,生成执行计划;

元数据:解析查询语句,执行语法分析,生成执行计划;

Hive中包含4中数据模型:Tabel、ExternalTable、Partition、Bucket。










  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值