我是 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/