caching - Spark 缓存与广播

标签 caching apache-spark

看起来广播方法在我的集群中创建了 RDD 的分布式副本。另一方面,执行cache()方法只是将数据加载到内存中。

但是我不明白缓存的RDD在集群中是如何分布的。

您能告诉我在什么情况下应该使用 rdd.cache() 和 rdd.broadcast() 方法吗?

最佳答案

cache()persist() 允许跨操作使用数据集。

当您持久 RDD 时,每个节点都会将其计算的任何分区存储在内存中,并在该数据集(或从其派生的数据集)上的其他操作中重用它们。这使得 future 的操作速度更快(通常快 10 倍以上)。 缓存是迭代算法和快速交互使用的关键工具。

每个持久化的 RDD 都可以使用不同的存储级别进行存储,例如,允许您将数据集持久化在磁盘上、将其持久化在内存中,但作为序列化的 Java 对象(以节省空间), 跨节点复制,或堆外存储

Broadcast variables允许程序员在每台机器上缓存一个只读变量,而不是随任务传送它的副本。例如,它们可用于以有效的方式为每个节点提供大型输入数据集的副本。 Spark还尝试使用高效的广播算法来分发广播变量,以降低通信成本。

您可以在此处找到更多详细信息documentation页。

有用的帖子:

Advantage of Broadcast Variables

What is the difference between cache and persist?

关于caching - Spark 缓存与广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38056774/

相关文章:

html - Apache 发送损坏的或 "dif"文件

api - 请帮助我使用 RESTful http 缓存

amazon-web-services - AWS 胶水 : How to add a column with the source filename in the output?

apache-spark - 读取spark中的字节列

apache-spark - Kubernetes 上 Apache Spark 结构化流上的长时间 GC 暂停

java - 如何在 Spring 3.1 中从多个参数生成自定义键以进行缓存抽象?

c# - 在实现 ASP.NET 自定义输出缓存方面需要建议

asp.net-mvc - 如何使用 linq2sql 存储库在我的 Asp.net Mvc 中实现缓存策略?

hadoop - 尝试在 Spark 中使用 Jena elephas 的 TriplesInputFormat 读取 RDF 文件时出现 NullPointerException

apache-spark - 在 Pyspark 上高效实现 SOM(自组织映射)