当从文本文件或集合(或从另一个RDD)创建弹性分布式数据集(RDD)时,我们是否需要显式调用"cache"或"persist"来将RDD数据存储到内存中?或者默认情况下RDD数据是以分布式方式存储在内存中的吗?
val textFile = sc.textFile("/user/emp.txt")
Run Code Online (Sandbox Code Playgroud)
根据我的理解,在上面的步骤之后,textFile是一个RDD,并且可以在节点的所有/部分内存中使用.
如果是这样,为什么我们需要在textFile RDD上调用"cache"或"persist"呢?
我有一个大型数据集,我试图用Apache Spark运行(大约5TB).我注意到,当作业开始时,它会非常快速地检索数据,并且作业的第一阶段(map转换)非常快速地完成.
但是,在处理了大约500GB的数据之后,这种map转换开始变慢,一些任务需要几分钟甚至几小时才能完成.
我正在使用10台机器,122 GB和16CPU,我正在为每个工作节点分配所有资源.我想过增加机器的数量,但还有其他的东西我可能会丢失吗?
我尝试了一小部分数据集(30 GB),似乎工作正常.
performance distributed-computing cluster-computing bigdata apache-spark