RDBMS和Hive有什么区别?

10
在像MySQL这样的关系型数据库管理系统中,有数据库,那么在Hive上也有数据库吗?根据手册上的阅读,Hive只有表,这让我有点困惑。
RDBMS和Hive的概念有什么不同?
谢谢。
5个回答

12
RDBMs数据库和Hive的主要区别在于专业化。虽然MySQL是通用数据库,既适用于事务处理(OLTP),也适用于分析(OLAP),但Hive仅适用于分析。从技术上讲,主要区别在于缺乏更新/删除功能。数据只能添加和选择。与此同时,Hive能够处理MySQL或其他传统RDBMS无法处理(在较少的预算情况下)的数据量。
MPP(大规模并行处理)数据库在功能上最接近Hive——尽管它们具有完整的SQL支持,但它们可扩展到数百台计算机。
另一个严重的区别是查询语言。由于其实现方式,Hive甚至在select中也不支持完整的SQL。在我看来,主要区别是除相等条件外缺少任何条件的连接。
Hive查询语言语法也略有不同,因此您不能直接将报表生成软件连接到Hive。

5

基本上,Hive是建立在MapReduce之上的类似SQL的脚本语言。当您发出命令时,这些命令会在分布式系统上进行解释和执行。由于被处理的文件是平面的,因此相当于在Hadoop中运行等效代码并收集数据。整个流程比使用MySQL要慢得多。


我想知道,慢多少?哪种情况下使用?有时候,即使Unix命令行的sort命令也比MySQL排序要快。 - arivero
如果MySQL中的内容没有被索引,它可能会变得很慢,但是如果已经被索引了,那么它几乎肯定比Hive快得多。 - delmet

2
Hive与传统数据库的区别:
Hive --> 读时模式 - 在加载数据时不会验证模式。
传统数据库 --> 写时模式 - 表模式在数据加载时被强制执行,即如果正在加载的数据不符合模式,则会被拒绝。
Hive --> 易于低成本扩展。
传统数据库 --> 不太可扩展,成本高昂。
Hive --> 基于Hadoop标记,即写一次,多次读取。
传统数据库 --> 可以多次读写。
Hive --> 不支持记录级更新。
传统数据库 --> 支持记录级更新、插入和删除、事务和索引。
Hive --> 尚不支持OLTP(联机事务处理),但支持OLAP(联机分析处理)。
传统数据库 --> RDBMS支持OLTP和OLAP。
或者请查看以下网址。

https://sensaran.wordpress.com/2016/01/30/comparison-with-hive-with-traditional-database/


1
从版本0.14开始,Hive支持记录级别的更新。 - Sonu

1
Hive是由Facebook发明的,它就像Sql一样,但对内部查询的支持较少。它允许您使用所有类型的连接和分组函数,就像Sql一样提供用户定义函数(UDF),可以用Java或任何其他语言编写,并可在Hive中使用。
当数据量大时,通常使用Hive进行分区或聚类,而不是像在Sql中那样单行插入或更新。

1

这不完全是对原问题的回答,但似乎超过了最大评论大小47个字符。

当你使用基于HDFS和Hive的OLAP数据仓库时,你并不是被禁止更新事实数据。你可以通过与许多优秀的基于RDBS的数据仓库相同的方式来做到这一点 - 通过在舞台和数据仓库之间交换分区。在Hive中,表分区被实现为HDFS目录,因此交换分区(几乎)是即时的:它只需要重命名一个HDFS目录的时间。好吧,你将不得不直接调用HDFS,绕过Hive界面,你可能会使用直接的MapReduce来维护阶段,但在我所在公司开发的数据仓库中,这被证明是一个很好的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接