让我们从冲积内存中创建一个RDD。
rdd1 = sc.textFile("alluxio://.../file1.txt")
rdd2 = rdd1.map(...)rdd2驻留在alluxio上还是spark的堆上。
另外,像pairRDD1.join(pairRDD2)这样的操作(都是对RDD )会在冲积堆或火花堆上创建一个新的RDD。
第二个问题的原因是我需要加入两个大的RDD,它们都是关于冲积的。join是使用冲积for的内存,还是RDD的RDD会被拉到火花内存中进行连接(结果RDD将驻留在哪里)。
发布于 2016-06-24 14:16:58
火花转换是以懒散的方式进行评估的。这意味着在需要结果之前不会对map()进行评估,并且不会消耗任何火花内存。只有当您显式地调用RDD上的cache()时,RDD才会消耗Spark内存。
因此,当您从Alluxio加入2个RDDs时,只有RDDs的源数据将是内存,在Alluxio中。在连接期间,Spark将使用执行连接所需的内存。
结果的RDD驻留在哪里取决于您对该RDD所做的操作。如果要将生成的RDD写入文件,则该RDD不会在Spark内存中完全物化,而是会写入该文件。如果该文件位于Alluxio中,那么它将位于Alluxio内存中,而不是Spark内存中。只有在显式调用cache()时,结果的RDD才会在火花内存中。
https://stackoverflow.com/questions/37719969
复制相似问题