首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何强制对火花DataFrames的记忆进行持久化?

如何强制对火花DataFrames的记忆进行持久化?
EN

Stack Overflow用户
提问于 2017-02-14 09:33:56
回答 1查看 5K关注 0票数 2

我正在使用withColumn和窗口操作(使用Python/Spark)构建许多新列。这导致了一个大的血统,这减慢了操作。实际上,每隔几步将DataFrame持久化到磁盘非常有帮助。

但是,如何方便地将DataFrame缓存在内存中并强制物化,从而减少沿袭呢?

(我见过关于count的建议,但我的印象是只适用于RDDs?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-14 09:46:14

首先,计数也适用于dataframe。任何包含整个数据帧的操作都足够了(计数遍历所有记录,因此将实现整个数据)。

第二,需要注意的是,缓存不会减少血统。整个谱系将作为代码生成的一部分进行分析和优化。唯一的区别是,可能会跳过许多步骤,因为将使用缓存中已经物化的数据(BTW,这并不总是正确的,在某些情况下,优化器可能决定根据其内部启发式重新计算)。

有两种方法可以减少数据文件的谱系。

  1. 写入磁盘并重新加载(这将谱系减少到“读取”部分)。
  2. 使用检查点(在后台也可以保存和加载)。 检查点的优点是您可以写入本地磁盘而不是分布式磁盘(这需要更少的时间),但是,这是通过RDDs完成的(甚至用于检查点数据time的新接口实际上在幕后直接使用RDD检查点),因此要大于dataframe大小,这可能会导致实际操作的速度变慢。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42222409

复制
相关文章

相似问题

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