[英]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.