它们都是为了快速访问数据集。两者有什么区别?
createOrReplaceTempView将一个DataFrame表注册为一个表,您可以使用SQL查询该表(绑定到注册该表的生命周期SparkSession-因此Temp是名称的一部分)。但是请注意,此方法不允许您实现任何性能改进。
cache(或persist)标记DataFrame在执行以下操作后要缓存的内容,从而可以在后续操作中更快地进行访问。DataFrame就像RDD一样,表示对基础(分布式)数据结构(血缘关系)执行的计算顺序。每当您执行转换时(例如:通过将功能应用于每个记录map),您都将获得更新的沿袭。每当您对实际执行某项操作时DataFrame,必须执行某种谱系的某种计算,每次都会重新执行它,除非它已经被缓存并且可以使用。
这意味着使用cache或persist将帮助您优化需要DataFrame多次访问内容的情况。