我想了解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()
加入?
加入只是一个例子。 :)
答案 0 :(得分:3)
Spark HiveContext使用下面的Spark执行引擎,请参阅spark code。
spark中的解析器支持是可插拔的,HiveContext使用spark的HiveQuery解析器。
从功能上讲,您可以使用sql完成所有操作,而不需要使用Dataframe。但是数据帧提供了一种方便的方法来实现相同的结果。用户不需要编写SQL语句。