【发布时间】:2016-11-29 15:00:34
【问题描述】:
我是 Apache Spark 的新手,我在阅读 spark 材料时有几个关于 spark 的基本问题,我无法理解。每种材料都有自己的解释方式。我在 Ubuntu 上使用 PySpark Jupyter notebook 来练习。
据我了解,当我运行以下命令时,testfile.csv 中的数据被分区并存储在各个节点的内存中。(实际上我知道它是一个惰性评估,它不会处理,直到它看到动作command ),但概念仍然是
rdd1 = sc.textFile("testfile.csv")
我的问题是当我运行以下转换和操作命令时,rdd2 数据将存储在哪里。
1.它是否存储在内存中?
rdd2 = rdd1.map( lambda x: x.split(",") )
rdd2.count()
我知道 rdd2 中的数据在我关闭 jupyter notebook 之前都是可用的。那么 cache() 的需要是什么,无论如何 rdd2 都可以进行所有转换。听说转换完后内存中的数据都被清空了,这是怎么回事?
-
将RDD保存在内存中和cache()有什么区别
rdd2.cache()
【问题讨论】:
-
也许有点跑题了,但我遇到了这个线程有一个相关的问题:我的 Pyspark 决定每次 rdd 或 dfs 都在 rdd 中运行内置的 udf,这是由此构建的rdd,被调用。 rdd.cache() 停止了这种行为。更重要的是,udf 从调用 .cache() 的位置开始一次又一次地停止运行。因此,越早检测到 multiple-calling-rdd 或 multiple-calling-df 越好。
标签: caching apache-spark pyspark rdd