内部的HiveContext如何工作?

Tom*_*ian 4 hadoop apache-spark-sql

我是Spark的新手.我发现使用HiveContext我们可以连接hive并运行HiveQLs.我运行它,它工作.

我怀疑它是否Spark通过spark jobs.也就是说,它HiveContext仅用于从HDFS访问相应的hive表文件

要么

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

Sri*_*ini 12

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

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

回到你的问题,当你使用HiveContext时,它将访问Metastore数据库和所有你的Hive元数据,它可以清楚地解释你拥有什么类型的数据,你在哪里有数据,序列化和反序列化,压缩编解码器,列,数据类型和字面上关于表及其数据的每个细节.这足以让人们了解数据.

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

如果它能回答你的问题,请告诉我.