虽然这样做对RDD的转换,例如: -RDD改造和行动
firstRDD=spark.textFile("hdfs://...")
secondRDD=firstRDD.filter(someFunction);
thirdRDD = secondRDD.map(someFunction);
是否第一,第二和第三RDD存储值在RAM或者当我们像result = thirdRDD.count()
最终thirdRDD执行行动,那么它会存储数据?
虽然这样做对RDD的转换,例如: -RDD改造和行动
firstRDD=spark.textFile("hdfs://...")
secondRDD=firstRDD.filter(someFunction);
thirdRDD = secondRDD.map(someFunction);
是否第一,第二和第三RDD存储值在RAM或者当我们像result = thirdRDD.count()
最终thirdRDD执行行动,那么它会存储数据?
直到count
被调用,根本没有处理。
任何操作都不会在内存中存储任何数据,不包括count
所需的常量内存分配。
在count
期间物化的行可以立即丢弃并收集垃圾。
在任何情况下,只有在链中调用动作时,RDD才会加载值。在这种情况下,只有在执行计数操作时才加载值,并且只加载数据,直到指定在“filter”功能内指定的条件为止。
它不会加载数据并保存在内存中。它可以如果你调用方法坚持在一个RDD上。否则,它会在下次执行任何操作时从头开始加载数据。
请让我知道它是否有帮助。
好吧,这意味着firstRDD = spark.textFile(“hdfs:// ...”) 将文本文件存储在RAM中? –
如果你不叫'坚持'firstRdd',它不会在RAM中存储文本文件 – Sharad
好吧得到它谢谢:) 你知道火花独立管理容错的方式吗? –
好吧,这意味着firstRDD = spark.textFile(“hdfs:// ...”) 不会将文本文件存储在RAM中?这意味着在转换中没有内存读/写?在转换某处它应该存储操作员功能吗? –
内存中,即RDD内部的数据尽可能多地(大小)和长(时间)地存储在内存中。这里是说RDD数据驻留在RAM中。 –