Python RDD'上转换的内存使用情况;s在alluxio/spark的超光速子中
假设我们从alluxio内存创建RDDPython RDD'上转换的内存使用情况;s在alluxio/spark的超光速子中,python,apache-spark,pyspark,alluxio,Python,Apache Spark,Pyspark,Alluxio,假设我们从alluxio内存创建RDD rdd1 = sc.textFile("alluxio://.../file1.txt") rdd2 = rdd1.map(...) rdd2是否驻留在alluxio或spark的堆上 也会有类似的操作(alluxio上的两个PAIRDD) pairRDD1.join(pairRDD2)在alluxio或spark堆上创建新的RDD 第二个问题的原因是我需要加入alluxio上的两个大型RDD。连接会使用alluxio的内存还是RDD会被拉入spark内
rdd1 = sc.textFile("alluxio://.../file1.txt")
rdd2 = rdd1.map(...)
rdd2
是否驻留在alluxio
或spark
的堆上
也会有类似的操作(alluxio上的两个PAIRDD)
pairRDD1.join(pairRDD2)
在alluxio或spark堆上创建新的RDD
第二个问题的原因是我需要加入alluxio上的两个大型RDD。连接会使用alluxio的内存还是RDD会被拉入spark内存进行连接(以及结果RDD将驻留在哪里) Spark变换以惰性方式进行计算。这意味着在需要结果之前,
map()。只有在显式调用RDD上的cache()
时,RDD才会消耗Spark内存
因此,当您从Alluxio连接2个RDD时,在Alluxio中,只有RDD的源数据是内存。在连接期间,Spark将使用执行连接所需的内存
结果RDD所在的位置取决于您对该RDD所做的操作。如果将生成的RDD写入文件,则该RDD不会在Spark内存中完全具体化,而是会写入文件。如果该文件在Alluxio中,它将在Alluxio内存中,而不是Spark内存中。如果显式调用cache()
Spark转换是以惰性方式计算的,则生成的RDD将只在Spark内存中。这意味着在需要结果之前,map()。只有在显式调用RDD上的cache()
时,RDD才会消耗Spark内存
因此,当您从Alluxio连接2个RDD时,在Alluxio中,只有RDD的源数据是内存。在连接期间,Spark将使用执行连接所需的内存
结果RDD所在的位置取决于您对该RDD所做的操作。如果将生成的RDD写入文件,则该RDD不会在Spark内存中完全具体化,而是会写入文件。如果该文件在Alluxio中,它将在Alluxio内存中,而不是Spark内存中。如果显式调用cache()
,则生成的RDD将仅在Spark内存中,-映射的输出将写入OS缓冲区缓存。-操作系统将决定数据是否可以保留在操作系统缓冲区缓存中,还是应该溢出到磁盘。-映射的输出写入操作系统缓冲区缓存。-操作系统将决定数据是否可以保留在操作系统缓冲区缓存中,还是应该溢出到磁盘。