我是Spark的新手,发现使用HiveContext
我们可以连接hive
并运行HiveQL
s。我运行它,它起作用了。
我的疑问是是否Spark
通过spark jobs
。也就是说,它HiveContext
仅用于从HDFS访问相应的配置单元表文件
或者
它内部调用hive来执行查询吗?
不,Spark不会调用配置单元来执行查询。Spark仅从配置单元读取元数据,并在Spark引擎内执行查询。Spark拥有自己的SQL执行引擎,其中包括催化剂,钨等组件,以优化查询并提供更快的结果。它使用来自配置单元和spark执行引擎的元数据来运行查询。
Hive的最大优势之一是它的metastore。它充当hadoop生态系统中许多组件的单个meta存储。
提出您的问题,当您使用HiveContext时,它将可以访问metastore db和所有Hive Meta Data,它们可以清楚地说明您拥有的数据类型,您在哪里拥有数据,序列化和反序列化,压缩编解码器,列,数据类型以及字面上有关表格及其数据的每个细节。这足以让spark理解数据。
总体而言,Spark只需要元存储即可提供基础数据的完整详细信息,一旦有了元数据,它将在其执行引擎上执行您所要求的查询。Hive比Map Spark慢,因为它使用MapReduce。因此,没有任何必要返回到配置单元并要求在配置单元中运行它。
让我知道它是否回答了您的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句