spark sql 在 hive 上的目的是什么?

what's the purpose of spark sql over hive?

我知道这个问题几年前就有人问过,但我仍然想知道使用 SparkSQL / HiveContext 的真正目的。

Spark 方法提供了比内置 MapReduce 更通用的分布式方式。

我看了很多文章说MR方式已经死了,Spark是最好的(我知道我可以通过Spark实现MR方式)。

推荐使用HiveContext查询数据的时候,我有点懵

确实,运行 来自 SparkSQL/HiveContext 的查询是否暗示 运行 MR 工作?这不是回到主要问题吗?如果不需要将查询结果封装在更复杂的代码中,TEZ 还不够吗?

我错了吗(我确定我错了:-))?

Indeed, running a query from SparkSQL/HiveContext doesn't it imply running a MR job ?

没有。事实上,使用 HiveContextSparkSession 和 "Hive support" 并不意味着与 Hive 有任何联系,除了使用 Hive metastore。许多其他系统都使用这种方法,包括 ETL 解决方案和数据库。

最后:

  • Hive 是一个具有模块化组件的数据库。支持比较丰富的权限系统、突变和交易。
  • Spark 是通用处理引擎。尽管有 SQL-ish 组件,但它不会尝试成为数据库。