【问题标题】:Force loading RDD from file to memory in Spark在 Spark 中强制将 RDD 从文件加载到内存
【发布时间】:2016-04-19 06:12:52
【问题描述】:

我有一个运行 Spark 计算的演示应用程序。为此,它会加载存储在目标文件中的 RDD,然后执行一些取决于用户输入的任务。

使用sparkContext.objectFile() 加载RDD 是一个冗长的操作。由于时间是一个问题,我想在演示开始之前加载它,并且只执行依赖于演示期间输入的计算。但是,Spark 的惰性策略导致只有在触发整个计算时才读取文件。

RDD.cache() 本身并不能解决问题。缓存也是一种惰性操作。

有没有办法从文件中强制加载 RDD?

如果没有,有没有办法加快 RDD 负载,和/或将其保存在内存中以供将来的 Spark 作业使用?

Spark 版本为 1.5,它以单节点独立模式运行。该文件是从本地文件系统中读取的。如果需要,我可以调整 Spark 的配置或这些设置。

【问题讨论】:

    标签: apache-spark rdd


    【解决方案1】:

    在调用cache() 之后,调用rdd 上的任何action(通常使用count())来“实现”缓存。对该 RDD 的进一步调用将使用缓存版本:

    RDD.cache().count() // this will load the RDD
    // use RDD, it's cached now
    

    【讨论】:

    • 似乎不像宣传的那样工作。 RDD 分区是否有可能从内存中被逐出,或者没有完全加载?
    • 仅当您没有足够的内存时.. 是吗?您可以在 Spark UI (https://:4040/storage/) 中检查这一点,查找您的 RDD 并检查其“Fraction Cached”
    • 似乎可以工作,虽然对 Spark 的内存管理参数非常敏感
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多