我是Spark SQL世界的新宠.我目前正在迁移我的应用程序的摄取代码,其中包括在舞台,HDFS中的Raw和Application层中摄取数据以及执行CDC(更改数据捕获),这当前在Hive查询中编写并通过Oozie执行.这需要迁移到Spark应用程序(当前版本1.6).代码的另一部分稍后将迁移.
在spark-SQL中,我可以直接从Hive中的表创建数据帧,只需执行查询(如sqlContext.sql("my hive hql")).另一种方法是使用数据帧API并以这种方式重写hql.
这两种方法有什么不同?
使用Dataframe API是否有任何性能提升?
有人建议,在直接使用"SQL"查询时会有一层额外的SQL引发核心引擎,这可能会在一定程度上影响性能,但我没有找到任何证实该声明的材料.我知道使用Datafrmae API的代码会更加紧凑,但是当我的hql查询非常方便时,将完整的代码编写到Dataframe API中真的值得吗?
谢谢.