hadoop - spark 的 HiveContext 内部是如何工作的?

标签 hadoop apache-spark-sql

我是 Spark 的新手。我发现使用 HiveContext 我们可以连接到 hive 并运行 HiveQL。我运行它并且成功了。

我怀疑Spark是不是通过spark jobs来实现的,也就是说,它使用HiveContext只是为了从HDFS访问对应的hive表文件

或者

它内部调用hive来执行查询?

最佳答案

不,Spark 不会调用配置单元来执行查询。 Spark 仅从 hive 中读取元数据并在 Spark 引擎中执行查询。 Spark 拥有自己的 SQL 执行引擎,其中包括催化剂、钨等组件,以优化查询并提供更快的结果。它使用来自 Hive 的元数据和 Spark 的执行引擎来运行查询。

Hive 的最大优势之一是它的 Metastore。它充当 hadoop 生态系统中许多组件的单个元存储。

针对您的问题,当您使用 HiveContext 时,它将访问 Metastore 数据库和您所有的 Hive 元数据,这可以清楚地说明您拥有什么类型的数据,数据在哪里,序列化和反序列化,压缩编解码器、列、数据类型以及关于表及其数据的每个细节。这足以让 Spark 理解数据。

总的来说,Spark 只需要 Metastore,它提供了底层数据的完整细节,一旦它有了元数据,它就会通过它的执行引擎执行你要求的查询。 Hive 比 Spark 慢,因为它使用 MapReduce。因此,返回 hive 并要求在 hive 中运行它是没有意义的。

如果它回答了你的问题,请告诉我。

关于hadoop - spark 的 HiveContext 内部是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35869003/

相关文章:

ubuntu - 创建 3 节点 Hadoop 集群

hadoop - 在 MR 单元中模拟上下文对象

apache-spark - Hadoop Spark-存储在一个大文件中,而不是存储许多小文件和索引

python - 如果使用Apache Slider时无法在群集上安装Python,该怎么办?

hadoop - Sparksql saveAsTable 调用错误的 hdfs 端口

hadoop - 编译语句时出错:失败:ParseException第4:22行不匹配,输入 ','期望<靠近 'array'在列表类型中

apache-spark - 为什么即使指定了所有值,Spark SQL 也会为字符串列打开可为空?

pyspark - 获取 Spark DataFrame 中两个日期之间的所有日期

jdbc - Spark作业服务器错误类未找到异常

python - 如何检查Pyspark Map中是否存在键或值