RDD转型和行动

时间:2017-08-27 18:52:52

标签: apache-spark rdd

在对RDD进行转换时,例如: -

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

secondRDD=firstRDD.filter(someFunction);

thirdRDD = secondRDD.map(someFunction);

第一个,第二个和第三个RDD是将值存储在RAM中,还是当我们对result = thirdRDD.count()这样的最终第三个RDD执行操作时,它会存储数据吗?

2 个答案:

答案 0 :(得分:2)

  • 在调用this.UserService.getUserInfo() .map(user => `${user.firstName} ${user.lastName}`) .subscribe(fullName => this.name = fullName) 之前,根本没有处理。

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

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

答案 1 :(得分:0)

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

它不会加载数据并将其保存在RAM中。它可以在一个RDD上调用方法持久化。否则,它将在下次操作任何操作时从头开始加载数据。

如果有帮助,请告诉我。