我是Spark世界的新手。我目前正在迁移我的应用程序的摄取代码,其中包括在HDFS中摄取数据,在HDFS中使用原始数据和应用层,并执行CDC(变更数据捕获),这是目前在Hive查询中编写的,并通过Oozie执行。这需要迁移到Spark应用程序(当前版本1.6)中。代码的另一部分稍后将迁移。
在spark中,我可以直接从Hive中的表创建数据格式,只需按原样执行查询(如sqlContext.sql("my hive hql") )。另一种方法是使用dataframe并以这种方式重写hql。
这两种方法有什么不同?
使用Dataframe有什么性能提高吗?
有些人认为,在直接使用" SQL“查询时,会有一个额外的SQL层触发核心引擎,这可能会在一定程度上影响性能,但我没有找到任何能证实这一说法的材料。我知道代码将与Datafrmae紧密得多,但是当我使用hql查询时,是否值得将完整的代码写入Dataframe?
谢谢。
发布于 2021-01-16 11:55:59
再加几个。dataframe使用钨内存表示、sql使用的催化剂优化器以及Dataframe。使用Dataset API,您比使用SparkSQL对实际执行计划有更多的控制。
https://stackoverflow.com/questions/45430816
复制相似问题