Spark 2.0中持久存在的是什么?

时间:2018-02-20 02:21:08

标签: apache-spark pyspark

假设我在pyspark工作。我有一个RDD rdd = sc.Textfile(file.txt),我打电话给rdd.persist() 然后重新分配:rdd = rdd.filter(lambda x: 'hi' in x)

现在sc.Textfile(file.txt)被保留在内存中,或者rdd.filter(lambda x: 'hi' in x)现在被保留了吗?

1 个答案:

答案 0 :(得分:0)

在火花中,RDD按需评估。 例如:

rdd1 = rdd.map(r=>e)     
rdd1.count()

count()动作将在从hdfs读取记录后触发对rdd上的映射转换的评估。

如果再次执行rdd1.count()(或对rdd执行任何操作),则rdd链中的所有先前转换将再次执行。

但是,为了避免RDD重新评估,我们可以保留计算的RDD。 rdd1.persist()会将转换后的RDD保存在内存中,并且在rdd1上执行其他操作时不会触发rdd1的重新评估。

有几种持久性模式,如内存,仅磁盘或这些的组合。检查持久性模式here