scala 在数据集[重复]上,RenderOrReplaceTempView(viewName)和cache()之间有什么区别?

ovfsdjhp  于 5个月前  发布在  Scala
关注(0)|答案(1)|浏览(52)

此问题在此处已有答案

Temp table caching with spark-sql(2个答案)
5年前关闭。
它们都是为了快速访问数据集。两者之间有什么区别?

nle07wnf

nle07wnf1#

createOrReplaceTempViewDataFrame注册为一个表,您可以使用SQL查询(绑定到注册它的SparkSession的生命周期-因此名称中有Temp部分)。但是,请注意,此方法不允许您实现任何性能改进。
cache个(或persist)将DataFrame标记为在后续操作之后要缓存,使其在后续操作中访问更快。DataFrame s,就像RDD s一样,表示在底层(分布式)数据结构(即所谓的它的 * 血统 *)。每当您执行转换时,(例如:通过map将函数应用于每个记录),您将返回一个更新的沿袭。每当您实际对DataFrame执行操作时,必须执行沿袭的某种计算,它每次都会被重新执行,除非它已经被缓存了,因此可以使用。
这意味着使用cachepersist将帮助您优化需要多次访问DataFrame内容的情况。

相关问题