Hive & SparkSQL 比较

Hive

在  Hadoop 集群上所有数据的访问都是通过 Java 编写的 MapReduce 作业来完成的,这些让 Java 程序员来完成没有问题。

但是对 SQL 程序员来说,写 MapReduce 则非常困难。Hive 的目的就是允许 SQL 能够访问 HDFS 中的数据。

 

Hive 定义了一个简单的类 SQL查询语言,叫做 HQL。这种语言让用户能用熟悉的 SQL来查询数据,

用 HQL 编写的查询语句通过 Hive 转化成 MapReduce 代码并且通过 Hadoop 来执行。但 HQL 并非完全标准的 SQL。体现在下面几个方面

  • Hive 不支持连接条件
  • 不支持 update 和 delete 语句
  • 不支持事务

Spark SQL

spark sql 本身就是跑在 spark 上,其性能表现比 Hive 要好。 spark SQL 有一个内存计算模型,可以比 MapReduce 进行

磁盘访问的方式快许多。

 

尽管 Spark SQL 用一种 Hive 查询语言 HQL 来表达,但也有一些在 Hive 上没有的额外功能。

如在整个用户会话期间缓存表数据的能力,相当于一些数据库中的临时表,这些表在内存中,访问速度要快许多。

 

以上内容节选自《hadoop 生态系统》

 

posted @ 2018-05-24 10:11  ReyCG  阅读(3046)  评论(0)    收藏  举报