我是Apache Spark的新手,在阅读Spark材料时有几个基本问题无法理解。每种材料都有自己的解释风格。我正在使用PySpark Jupyter笔记本电脑在Ubuntu上进行实践。
据我所知,当我运行以下命令时,testfile.csv中的数据被分区并存储在相应节点的内存中(实际上我知道这是一种惰性评估,直到它看到动作命令才会处理),但概念仍然存在。
rdd1 = sc.textFile("testfile.csv")
我的问题是当我运行以下转换和操作命令时,rdd2数据将存储在哪里。
1. 它会存储在内存中吗?
rdd2 = rdd1.map( lambda x: x.split(",") )
rdd2.count()
我知道rdd2中的数据只有在关闭jupyter笔记本之前才可用。那么cache()有什么必要呢?无论如何,rdd2都可以进行所有转换。我听说,在所有转换完成后,内存中的数据会被清除,这是怎么回事?
将RDD保留在内存中和使用cache()有什么区别吗?
rdd2.cache()