首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >火花缓存/持久化vs洗牌文件

火花缓存/持久化vs洗牌文件
EN

Stack Overflow用户
提问于 2022-09-09 14:11:27
回答 3查看 71关注 0票数 1

我试图理解火花缓存/持久化机制的好处。

AFAIK,火花总是坚持RDDs后,洗牌作为一个优化。那么,缓存/持久化调用提供了哪些好处?我假设缓存/持久化发生在内存中,所以唯一的好处是它不会从磁盘读取,对吗?

EN

回答 3

Stack Overflow用户

发布于 2022-09-09 18:56:31

有两个不同之处

在洗牌期间,

  1. 保存中间数据(需要在节点间移动的数据),以避免重新洗牌。这在Spark中作为跳过的阶段得到了反映。使用缓存/持久化,您正在缓存处理过的data.
  2. You,它控制了需要缓存的数据,但是您没有对缓存洗牌数据的显式控制(它是幕后的optimization).

)

票数 2
EN

Stack Overflow用户

发布于 2022-09-11 02:25:09

是延迟评估的,如果您做了类似的事情

代码语言:javascript
运行
复制
val a = df1.join(df2)
val b = a.groupBy(col).agg(...)
a.write.parquet(...)
b.write.parquet(...)

然后扫描df1df2并加入两次,每次write操作一次。

也就是说,除非您缓存或持久化它们。

对于洗牌的持久性完全是另一回事,它处理的是洗牌操作的内部--而不是影响您在应用层看到的东西。

票数 1
EN

Stack Overflow用户

发布于 2022-09-10 12:49:50

缓存/持久化调用提供了什么好处?

我马上想到的一个例子是火花读取过程,如果您从文件系统读取一些数据,并且对它执行两组不同的转换(以及最后的操作),您将加载两次源数据(您可以检查您的UI,您将看到两个加载),但是如果您缓存它,加载过程只会发生一次。

缓存/持久化发生在内存中,因此唯一的好处是它不会从磁盘读取

不,缓存和持久化发生在不同的级别上,内存是默认级别:请在这里查看:https://spark.apache.org/docs/latest/rdd-programming-guide.html#rdd-persistence

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73663455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档