假设我在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)
现在被保留了吗?
答案 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。