【问题标题】:How HiveContext of spark internally works?spark的HiveContext如何在内部工作?
【发布时间】:2016-06-22 11:52:03
【问题描述】:

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

我的疑问是Spark 是否通过spark jobs 做到这一点。也就是说,它使用HiveContext 仅用于从HDFS 访问相应的hive 表文件

或者

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

【问题讨论】:

    标签: hadoop apache-spark-sql


    【解决方案1】:

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

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

    关于你的问题,当你使用 HiveContext 时,它会访问 metastore db 和你所有的 Hive 元数据,这可以清楚地解释你有什么类型的数据,你在哪里有数据,序列化和反序列化,压缩编解码器、列、数据类型以及有关表及其数据的每个细节。这足以让 spark 理解数据。

    总体而言,Spark 只需要提供底层数据完整详细信息的元存储,一旦它拥有元数据,它将通过其执行引擎执行您要求的查询。 Hive 比 Spark 慢,因为它使用 MapReduce。因此,回到 hive 并要求在 hive 中运行它是没有意义的。

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

    【讨论】:

    • 您能否为此添加一些文档参考?谢谢
    • 感谢您的回答!我还提到,小表的 SQL 查询在 Spark 的 HiveContext 中比在 Tez 上的 Hive 中直接执行要快得多。最好能看到一些指向源代码或文档的链接,其中清楚地表明 HiveContext 使用 Spark 引擎而不是在 Hive 本身中执行查询。
    • 为什么我在 Spark 中找不到相关文档?
    猜你喜欢
    • 1970-01-01
    • 2016-07-11
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 2016-04-03
    相关资源
    最近更新 更多