hive和oracle的区别
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 的,而关系数据库在这个方面要差很多。
最后,推荐我们的管理工具给大家