数据集上的createOrReplaceTempView(viewName)和cache()有什么区别

时间:2018-07-23 11:37:57

标签: apache-spark apache-spark-dataset

它们两者都是为了快速访问数据集。两者有什么区别?

1 个答案:

答案 0 :(得分:3)

createOrReplaceTempView将一个DataFrame注册为一个表,您可以使用SQL查询该表(绑定到注册它的SparkSession的生命周期-因此,名称)。但是请注意,此方法不能使您获得任何性能改进。


Temp(或cache)将persist标记为要在以下操作之后进行缓存,从而使其在后续操作中可以更快地访问。 DataFrameDataFrame一样,代表对基础(分布式)数据结构(称为其 lineage )执行的计算顺序。每当您执行转换时(例如:通过RDD将功能应用于每个记录),都将返回更新的沿袭。每当您对map实际执行某项操作时,必须执行某种沿袭的计算,除非每次都已对其进行缓存且因此可用,否则每次都会重新执行该计算。

这意味着使用DataFramecache可以帮助您优化需要多次访问persist内容的情况。