我试图理解Spark hiveContext
。当我们使用 hiveContext
编写查询时
sqlContext=new HiveContext(sc)
sqlContext.sql("select * from TableA inner join TableB on ( a=b) ")
是使用火花发动机还是蜂巢发动机?我相信上面的查询将使用Spark Engine执行。但是,如果那样的话,为什么我们需要数据框架?
我们可以盲目地复制sqlContext.sql("")
中的所有Hive查询并在不使用数据框架的情况下运行。
通过dataframes,我的意思是像这样的 TableA.join(TableB, a === b)
我们甚至可以使用SQL命令执行聚合。有人可以澄清一下这个概念吗?如果使用dataFrame加入而不是sqlContext.sql()
加入有任何优势?加入只是一个例子。:)
spark hivecontext使用火花执行引擎,请参见火花代码。
Spark中的解析器支持是可插的,HiveContext使用Spark的Hivequery Parser。
在功能上,您可以使用SQL进行所有操作,并且不需要数据范围。但是数据范围为实现相同结果提供了一种方便的方法。用户不需要编写SQL语句。