为了将Spark SQL,SQL API查询组合在一起,我需要调用Dataframe.registerTempTable
函数来创建内存表来存储我的中间结果。 然后,我可以对其执行其他 SQL API 查询。
如果我只是使用数据帧 API,我可以使用 DSL 编写一个新的数据帧,然后对该中间结果执行多个操作,而无需显式创建临时表。
在这两种情况下是否有可能具有相同的性能? 换句话说,临时表的创建是懒惰的吗?
registerTempTable
是懒惰的,根本不缓存或具体化数据。它只是将具有相应逻辑计划的名称放在会话目录中。
因此,忽略SQL解析开销和哈希映射查找应该没有任何性能差异。