可以在没有运行任何 Map/Reduce (/Yarn) 的情况下对 Hive 表执行 Spark SQL 吗?

Posted

技术标签:

【中文标题】可以在没有运行任何 Map/Reduce (/Yarn) 的情况下对 Hive 表执行 Spark SQL 吗?【英文标题】:Can Spark SQL be executed against Hive tables without any Map/Reduce (/Yarn) running? 【发布时间】:2015-02-27 22:43:51 【问题描述】:

据我了解,Spark SQL 直接读取 hdfs 文件 - 这里不需要 M/R。具体来说,没有使用基于 Map/Reduce 的 Hadoop 输入/输出格式(HBase 等特殊情况除外)

那么在正常运行的 Hive 服务器上是否有任何内置依赖项?还是只需要有

a) Spark 独立 b) HDFS 和

c) Hive Metastore 服务器正在运行

即纱线/MRV1 是否不需要

用于访问 hive 文件的 hadoop 相关 I/O 格式似乎包括:

文本输入/输出格式 ParquetFile 输入/输出格式

Spark SQL/Catalyst 能否读取以这些格式存储的 Hive 表 - 仅运行 Hive Metastore 服务器?

【问题讨论】:

【参考方案1】:

是的。

Spark SQL Readme 说:

Hive 支持 (sql/hive) - 包括一个名为 HiveContext 的 SQLContext 扩展,允许用户使用 HiveQL 的子集编写查询并使用 Hive SerDes 从 Hive Metastore 访问数据。还有一些包装器允许用户运行包含 Hive UDF、UDAF 和 UDTF 的查询。

这是通过依赖 Hive 库来读取数据来实现的。但处理发生在 Spark 内部。所以不需要 MapReduce 或 YARN。

【讨论】:

其实很容易尝试。有没有尝试过,遇到了一些问题? 我们的目的是了解如果我们走这条路会有什么限制。因此,仅仅尝试可能无法捕捉到这些案例。可以肯定的是,如果我们尝试以这种方式访问​​ HBASE,它会失败——因为 hbase TableINputFormat 会通过 map/Reduce。但这只是一个例子——可能还有其他情况。

以上是关于可以在没有运行任何 Map/Reduce (/Yarn) 的情况下对 Hive 表执行 Spark SQL 吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在R中写入map reduce?

使用 map reduce 程序查找一年中每个月的最高温度

简单的 Java Map/Reduce 框架 [关闭]

hadoop Streaming详解

Map Reduce

关于在eclipse上能运行Map但无法运行Reduce的解决方法