2017-08-27 15 views
0

虽然这样做对RDD的转换,例如: -RDD改造和行动

firstRDD=spark.textFile("hdfs://...") 

secondRDD=firstRDD.filter(someFunction); 

thirdRDD = secondRDD.map(someFunction); 

是否第一,第二和第三RDD存储值在RAM或者当我们像result = thirdRDD.count()最终thirdRDD执行行动,那么它会存储数据?

回答

2
  • 直到count被调用,根本没有处理。

  • 任何操作都不会在内存中存储任何数据,不包括count所需的常量内存分配。

  • count期间物化的行可以立即丢弃并收集垃圾。

+0

好吧,这意味着firstRDD = spark.textFile(“hdfs:// ...”) 不会将文本文件存储在RAM中?这意味着在转换中没有内存读/写?在转换某处它应该存储操作员功能吗? –

+0

内存中,即RDD内部的数据尽可能多地(大小)和长(时间)地存储在内存中。这里是说RDD数据驻留在RAM中。 –

0

在任何情况下,只有在链中调用动作时,RDD才会加载值。在这种情况下,只有在执行计数操作时才加载值,并且只加载数据,直到指定在“filter”功能内指定的条件为止。

它不会加载数据并保存在内存中。它可以如果你调用方法坚持在一个RDD上。否则,它会在下次执行任何操作时从头开始加载数据。

请让我知道它是否有帮助。

+0

好吧,这意味着firstRDD = spark.textFile(“hdfs:// ...”) 将文本文件存储在RAM中? –

+0

如果你不叫'坚持'firstRdd',它不会在RAM中存储文本文件 – Sharad

+0

好吧得到它谢谢:) 你知道火花独立管理容错的方式吗? –