我有一个运行Spark计算的演示应用程序。为此,它加载存储在目标文件中的RDD,然后执行一些取决于用户输入的任务。
使用sparkContext.objectFile()
加载RDD是一项冗长的操作。由于时间问题,我想在演示开始之前加载它,并且只在演示期间执行依赖于输入的计算。但是,Spark的惰性策略只会在触发整个计算后才读取文件。
RDD.cache()
不是自己做的伎俩。缓存也是一种懒惰的操作。
有没有办法从文件强制加载RDD?
如果没有,有没有办法加速RDD加载,和/或将其保存在内存中以备将来的Spark工作?
Spark版本为1.5,它以单节点独立模式运行。该文件从本地文件系统中读取。如果需要,我可以调整Spark的配置或这些设置。
答案 0 :(得分:1)
调用cache()
后,在您的rdd上调用任何操作(通常使用count()
)来“实现”缓存。对此RDD的进一步调用将使用缓存版本:
RDD.cache().count() // this will load the RDD
// use RDD, it's cached now