hive和oracle的区别

小编 TOP1 3011

hive和oracle的区别是:1.oracle是数据库,而hive是数据仓库;2.oracle数据库是支持存储计算功能的,Hive是基于hadoop的数据仓库工具,hive本身没有存储和计算能力,完全依赖于hdfs和MapReduce进行分布式存储和并行计算;3.通过将oracle/mysql等数据库中的表映射成hive上的一张表,使用hql语句对表数据进行增删改查操作,本质是将hql语句转化成Mapreduce程序运行。

一、关联的区别

通过左,右,内连接和笛卡尔积方式对比:

1.内连接

Oracle:

select * from a,b where a.c = b.d;

select * from a join b on a.c = b.d;

Hive:

select * from a join b on a.c = b.d;

注: 同一种关联在oracle中有两种写法,而在hive中只有一种,这里要值得注意的是hive不能用where进行关联

2.左连接

Oracle:

select * from a,b where a.c = b.d(+);

select * from a left join b on a.c = b.d;

Hive:

select * from a left join b on a.c = b.d;

3.右连接

Oracle:

select * from a,b where a.c(+) = b.d;

select * from a right join b on a.c = b.d;

Hive:

select * from a right join b on a.c = b.d;

4.笛卡尔积

Oracle:

select * from a,b;

Hive:

select * from a join b;

综上所述对比,可见oracle的关联方式相比hive更多,在oracle语法转hive语法时要注意

二、函数的区别

函数的区别是最复杂的,因为有的函数同名却作用不同,有的函数作用相同却不同名,有的函数在hive独有,在oracle没有,有的函数在oracle独有但在hive中没有。在语法互相转换时很容易弄混淆。

三、其他区别

1、Hive 和关系数据库存储文件的系统不同,Hive 使用的是 Hadoop 的HDFS(Hadoop的分布式文件系统),关系数据库则是服务器本地的文件系统;

2、Hive 使用的计算模型是 MapReduce,而关系数据库则是自己设计的计算模型;

3、关系数据库都是为实时查询的业务进行设计的,而 Hive 则是为海量数据做数据挖掘设计的,实时性很差,因为用到了Map-Reduce的计算模型;实时性的区别导致 Hive 的应用场景和关系数据库有很大的不同;

4、Hive 很容易扩展自己的存储能力和计算能力,这个是继承 Hadoop 的,而关系数据库在这个方面要差很多。


最后,推荐我们的管理工具给大家

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部