Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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
Apache spark 由于洗牌,在数据帧被再次持久化后触发取消持久化数据帧_Apache Spark - Fatal编程技术网

Apache spark 由于洗牌,在数据帧被再次持久化后触发取消持久化数据帧

Apache spark 由于洗牌,在数据帧被再次持久化后触发取消持久化数据帧,apache-spark,Apache Spark,假设我们有以下场景: val df: DataFrame = dataframe val df2 = df.partition(col("id").cache ... some transformations/joins by "id" resulting `val dfTransformed` ... val df3 = dfTransformed.groupBy("name").agg(<someaggregations>) val df4 = df3.partition(col

假设我们有以下场景:

val df: DataFrame = dataframe
val df2 = df.partition(col("id").cache
...
some transformations/joins by "id" resulting `val dfTransformed`
...
val df3 = dfTransformed.groupBy("name").agg(<someaggregations>)
val df4 = df3.partition(col("id").cache
...
some transformations/joins by "id"...
...
val-df:DataFrame=DataFrame
val df2=df.partition(col(“id”).cache
...
某些通过“id”进行的转换/连接导致`val dfTransformed`
...
val df3=dfTransformed.groupBy(“名称”).agg()
val df4=df3.partition(col(“id”).cache
...
通过“id”进行的某些转换/连接。。。
...
我的问题是,我是否需要在某个时候取消持久化df2?或者当我持久化df4时,它会自动覆盖df2

如果我需要取消持久化df2,那么何时取消持久化

如果我这样做:

val df3 = df2.groupBy("name").agg(<someaggregations>)
df2.unpersist
val df4 = df3.partition(col("id").cache
val df3 = df2.groupBy("name").agg(<someaggregations>)
val df4 = df3.partition(col("id").cache
df2.unpersist
val df3=df2.groupBy(“名称”).agg()
df2.unpersist
val df4=df3.partition(col(“id”).cache
我不会因为从内存中删除数据而损失一些性能吗

如果我这样做:

val df3 = df2.groupBy("name").agg(<someaggregations>)
df2.unpersist
val df4 = df3.partition(col("id").cache
val df3 = df2.groupBy("name").agg(<someaggregations>)
val df4 = df3.partition(col("id").cache
df2.unpersist
val df3=df2.groupBy(“名称”).agg()
val df4=df3.partition(col(“id”).cache
df2.unpersist
我真的不想取消持久化df4吗

或者当我持久化df4时,它会自动覆盖df2

Spark不会覆盖df2,因为您可能有一个不同的计算DAG分支从df2开始,类似于

val df4 = df3.partition(col("id").cache
val df2_1 = df2.groupBy("another_name")
我不会因为从内存中删除数据而损失一些性能吗

一般来说是的。你需要知道的主要一点是Spark执行的是懒惰的执行。所以在舞台上

val df3 = f2.groupBy("name").agg(<someaggregations>)
val df3=f2.groupBy(“name”).agg()
实际上什么也没发生。看看官方的星火转化和行动指南

我真的不想取消持久化df4吗

没有