【问题标题】:How to permanently save an object in memory with Spark?如何使用 Spark 将对象永久保存在内存中?
【发布时间】:2016-11-09 11:19:26
【问题描述】:

我使用 Spark(在 java 中)创建复杂对象的 RDD。是否可以将此对象永久保存在内存中,以便将来再次使用此对象和火花?

(因为 Spark 在应用程序或作业清理内存之后)

【问题讨论】:

    标签: java caching memory apache-spark persistent-storage


    【解决方案1】:

    Spark 不打算用作永久存储,您可以为此使用 HDFS、ElasticSearch 或其他“与 Spark 兼容”的集群存储。

    Spark 从集群存储读取数据,在random access memory RAM 中执行一些工作(以及临时结果的可选缓存),然后通常将结果写回集群存储,因为本地硬盘驱动器可能有太多结果。

    示例:Read from HDFS -> Spark ... RDD ... -> Store results in HDFS

    您必须区分硬盘驱动器(磁盘、SSD)等慢速存储和 RAM 等快速易失性内存。 Spark 的优势在于大量使用随机存取存储器 (RAM)。

    您可以使用caching,用于临时存储,请参阅:(Why) do we need to call cache or persist on a RDD

    【讨论】:

    • 我明白,但数据库不适合存储对象...所以最好的解决方案是使用 hdfs 将数据存储在磁盘中,并将其他数据库存储在内存中,如 Tachyon 或 Redis,以提高 spark 读取时的速度数据并且不保留对象格式?
    • HDFS 与 Spark 配合得很好,通常你会做 HDFS -> Spark -> HDFS,问题是你必须使用与 Spark 兼容的东西,它应该能够处理大量数据,但也许你的Spark 输出没有输入那么大,所以这并不总是必需的。
    猜你喜欢
    • 2021-04-18
    • 2012-01-13
    • 1970-01-01
    • 2015-11-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 2013-01-13
    • 2011-05-18
    相关资源
    最近更新 更多