Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Spark:数据帧缓存/持久性是否从一个传输到另一个?_Scala_Apache Spark_Apache Spark Sql - Fatal编程技术网

Scala Spark:数据帧缓存/持久性是否从一个传输到另一个?

Scala Spark:数据帧缓存/持久性是否从一个传输到另一个?,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,假设我有这个代码(Spark 1.6.2): 如果我运行finalDF.unpersist,它真的会从内存中清除finalDF/df的数据吗?如果没有,我该怎么做?是(如果测试为真) 基本上,当缓存更改数据帧时(即数据帧不是不可变的),这意味着如果finalDF是df,那么您将取消持久化df。如果test为false,那么就不会创建df,并且sqlContext.read.parquet的结果也不会缓存,但是调用unpersist不会造成任何伤害 您可以通过查看UI(默认情况下在端口4040中)

假设我有这个代码(Spark 1.6.2):

如果我运行
finalDF.unpersist
,它真的会从内存中清除
finalDF
/
df
的数据吗?如果没有,我该怎么做?

是(如果测试为真)

基本上,当缓存更改数据帧时(即数据帧不是不可变的),这意味着如果finalDF是df,那么您将取消持久化df。如果test为false,那么就不会创建df,并且sqlContext.read.parquet的结果也不会缓存,但是调用unpersist不会造成任何伤害


您可以通过查看UI(默认情况下在端口4040中)并签出存储选项卡来自己检查它。它将在取消持久化之前和之后显示缓存的df。

Spark使用最近使用最少的(LRU)算法删除旧数据分区。但是,如果您需要手动清理数据帧,unpersist()的工作原理与您预期的一样。 有关详细信息,请参阅

val finalDF: DataFrame = if (test) {
   val df = sqlContext.read.parquet(url).cache
   df.write.parquet(url2)
   df }
else
   sqlContext.read.parquet(other_url)