Spark HiveContext:Spark Engine还是Hive Engine?

时间:2017-09-14 06:00:16

标签: apache-spark spark-dataframe hivecontext

我想了解spark hiveContext。 当我们使用hiveContext编写查询时,如

sqlContext=new HiveContext(sc)
sqlContext.sql("select * from TableA inner join TableB on ( a=b) ")

是否使用Spark Engine或Hive Engine?我相信上面的查询是用Spark Engine执行的。但如果这就是为什么我们需要数据帧?

我们可以盲目地复制sqlContext.sql("")中的所有配置单元查询,并在不使用数据帧的情况下运行。

通过DataFrames,我的意思是这样TableA.join(TableB, a === b) 我们甚至可以使用SQL命令执行聚合。任何人都可以澄清这个概念吗?如果使用数据框连接有什么好处而不是sqlContext.sql()加入? 加入只是一个例子。 :)

1 个答案:

答案 0 :(得分:3)

Spark HiveContext使用下面的Spark执行引擎,请参阅spark code

spark中的解析器支持是可插拔的,HiveContext使用spark的HiveQuery解析器。

从功能上讲,您可以使用sql完成所有操作,而不需要使用Dataframe。但是数据帧提供了一种方便的方法来实现相同的结果。用户不需要编写SQL语句。