繁体   English   中英

在Hive上执行Spark SQL查询

[英]Spark SQL query execution on Hive

我是Spark SQL的新手,但知道hive查询执行框架。 我想了解spark如何执行sql查询(技术说明)?

如果我在命令之下开火

val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
sqlContext.sql("select count(distinct(id)) from test.emp").collect

在Hive中,它将转换为Map-Reduce作业,但如何在Spark中执行?

配置单元metastore将如何出现?

提前致谢。

简要回答您的问题:不,HiveContext将不会启动MR作业。 您的SQL查询仍将使用spark引擎

我将引用spark文档:

除了基本的SQLContext外,您还可以创建HiveContext,它提供基本SQLContext提供的功能的超集。 其他功能包括使用更完整的HiveQL解析器编写查询,访问Hive UDF以及从Hive表读取数据的功能。 要使用HiveContext,您不需要已有的Hive设置,并且SQLContext可用的所有数据源仍然可用。 HiveContext仅单独包装,以避免在默认的Spark版本中包含所有Hive的依赖项。 如果这些依赖性对于您的应用程序来说不是问题,则建议在1.3版本的Spark中使用HiveContext。 未来的版本将重点关注使SQLContext与HiveContext达到功能奇偶性

因此,Spark使用HiveContext来增强查询解析和访问现有Hive表,甚至可以保留结果DataFrames / Tables。 而且,实际上,Hive可以使用Spark作为其执行引擎,而不是使用MR或tez。

Hive Metastore是有关Hive表的元数据。 并且在使用HiveContext时,spark可以使用此metastore服务。 请参阅文档: http//spark.apache.org/docs/latest/sql-programming-guide.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM