Hive(二)Hive与数据库的主要区别详解
Hive与数据库的主要区别详解:
它们之间的区别在于:查询语言、存储位置、数据格式、数据更新、索引、执行、执行延迟、可扩展性和数据规模几方面。
1、 查询语言
2、 数据存储位置
在数据存储位置方面来说,数据库是将数据存储在块设备或本地文件系统中。而Hive是将所有数据存储在HDFS中,并建立在Hadoop之上。
3、 数据格式
在Hive中,并没有定义特有的数据格式,数据格式是由用户指定,用户在定义数据格式时需要指定3个属性,分别是列分隔符,比如通常为空格、\t、\x001,行分隔符,如“\n”,以及读取文件数据的方法。
Hive加载过程中,不会对数据本身做任何调整,而只是将数据内容本身复制到相应的HDFS目录。而在传统数据库中,由于不同的数据库有不同的存储引擎,各自定义了自己的数据格式,全部的数据都会按照一定的组织结构进行存储,因此数据库在加载数据的过程中比较耗时。
4、 数据更新
Hive本身是针对数据仓库而设计的,同时,由于数据仓库的内容往往是读多写少。所以Hive中不支持对数据的修改和增加,所有的数据都是在加载的过程中完成的。而数据库中的数据往往需要经常进行修改、查询、增加等操作。
5、 索引
不创建索引,扫描全部数据,由于HQL最终会转化成MapReduce,因此Hive可以并行访问数据。但其对数据访问的延迟较高,不适合在线查询数据。
6、 执行
执行最终通过MapReduce来进行。
7、 执行延迟
无索引、扫描整表,因此延迟高。与此同时MapReduce也有延迟,也会导致查询延迟。
8、 可扩展性
Hive与Hadoop的可扩展性是一致的,原因是Hive本身是建立在Hadoop之上的。而数据库是由于ACID语义的严格限制,扩展行非常有限。
9、 处理数据规模
由于Hive建立在集群上、同时基于MapReduce进行并行计算,所以可以支撑大规模的数据,而数据库可以支撑的数据规模相对较小。