Spark 中的迭代缓存与检查点

2024-04-11

我有一个在 Spark 上运行的迭代应用程序,我将其简化为以下代码:

var anRDD: org.apache.spark.rdd.RDD[Int] = sc.parallelize((0 to 1000))
var c: Long = Int.MaxValue 
var iteration: Int = 0
while (c > 0) {
    iteration += 1
    // Manipulate the RDD and cache the new RDD
    anRDD = anRDD.zipWithIndex.filter(t => t._2 % 2 == 1).map(_._1).cache() //.localCheckpoint()
    // Actually compute the RDD and spawn a new job
    c = anRDD.count()
    println(s"Iteration: $iteration, Values: $c")
}

后续作业中的内存分配会发生什么情况?

  • 目前是否anRDD“覆盖”以前的还是它们都保留在内存中?从长远来看,这可能会引发一些内存异常
  • Do localCheckpoint and cache有不同的行为?如果localCheckpoint用于代替cache, as localCheckpoint截断 RDD 谱系,那么我希望之前的 RDD 会被覆盖

不幸的是 Spark 似乎不太适合这样的事情。

您最初的实现是不可行的,因为在每次迭代中,新的 RDD 都会对旧的 RDD 进行内部引用,因此所有 RDD 都会堆积在内存中。

localCheckpoint是您想要实现的目标的近似值。它确实截断了 RDD 的谱系,但你失去了容错能力。该方法的文档中已明确说明。

checkpoint也是一种选择。它是安全的,但它会在每次迭代时将数据转储到 hdfs。

考虑重新设计该方法。此类黑客迟早会造成损失。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark 中的迭代缓存与检查点 的相关文章

随机推荐

  • d3js 将标签移动到节点旁边

    我正在开发一个通过图表进行模式表示的项目 我来从 json 检索数据以生成图形并找到与节点关联的标签 我还想找到与链接对应的标签 但是 当移动节点时 我无法移动标签 有什么帮助吗 请参阅此处的代码 http jsfiddle net obo
  • Matlab 中行索引的笛卡尔积

    我有一个二进制矩阵A维度的mxn with m gt n在Matlab中 我想构造一个矩阵B维度的cxn按行列出包含在中的行索引的笛卡尔积的每个元素A 为了更清楚地考虑以下示例 例子 m 4 n 3 A 1 0 1 0 0 1 1 1 0
  • 如何解决 JDK 17 中 Field.setAccessible 的 InaccessibleObjectException?

    使用 JDK 17 不可能再使用反射来访问字段 至少对于java lang 课程 以下片段 final Process process new ProcessBuilder directory new File d temp command
  • 使用 Geoplugin 旋转链接

    我使用 geoplugin class 将 CA 用户重定向到特定链接 现在 该代码仅允许我将用户重定向到 1 个网站 我想修改此代码 以便我可以将用户重定向到 link1 com link2 com link3 com 有人对此有快速修改
  • copy.deepcopy 与 pickle

    我有一个小部件的树结构 例如集合包含模型 模型包含小部件 我想复制整个收藏 copy deepcopy与 pickle and de pickle 对象相比更快 但用 C 编写的 cPickle 更快 因此 为什么我 我们 不应该总是使用
  • iOS项目:静态/动态代码分析和调用图

    我正在寻找一些适用于 iOS 项目的方便的代码分析工具 尤其是 进行静态分析 动态分析并生成调用图 到目前为止 在我的调查中 我发现 dtrace 解释如下here https stackoverflow com questions 107
  • 如何在Python中使用编码utf-8.py代替cp1252.py

    我编写了一个非常小的程序 当该行包含某个字符串时 它将一个文件的所有行复制到另一个文件 这是完整的来源 f in open all txt r f out open all out w for line in f in if
  • 如何获取Windows 7主题名称

    Windows 7 附带多个内置主题 可以通过右键单击桌面并选择个性化来访问它们 在个性化下 有一个名为 航空主题 的部分 其中包含 建筑 自然 等主题 我尝试使用 uxtheme dll 的 GetCurrentThemeName 但它实
  • Java UDP 服务器,并发客户端

    下面的代码足以接受并发 UDP 传输吗 更具体地说 如果 2 个客户端同时传输 当我调用 receive 时 DatagramSocket 会将传输排队并一一传送它们 还是只有一个能够通过 DatagramSocket socket new
  • MySQL 将布尔字段计为两个不同的列

    认为我有一个包含两个字段的表 ID and State 状态值 即布尔值 可以是 0 或 1 ID不是唯一的 因此该表如下所示 ID State 1 true 1 false 2 false 3 true 1 true 现在 我想对按 ID
  • Python3.3 HTML Client TypeError: 'str' 不支持缓冲区接口

    import socket Set up a TCP IP socket s socket socket socket AF INET socket SOCK STREAM Connect as client to a selected s
  • Gradle 同步任务,同步到文件夹但忽略目标中的指定目录

    我想将驱动器上的一个文件夹与另一个包含我想要保留的名为 logs 的文件夹的文件夹同步 使困惑 这是一个图表 C mydir sync this folder someotherfiles txt anotherDir into this
  • c, obj c 没有标签或标识符的枚举

    我正在学习 cocos2d iPhone 上目标 C 的 open gl 包装器 现在玩精灵在一个示例中发现了这一点 enum easySprite 0x0000000a mediumSprite 0x0000000b hardSprite
  • 如何确定 akka 中生成的 actor 数量?

    我最近开始研究 Akka 2 0 框架 并且能够运行一些代码 生成执行简单 Oracle 数据库调用 执行简单计算等的 Actor 但是在生产中什么也没有 我想知道的是 是否有一般的经验法则或最佳实践来确定为某些类型的任务生成多少个参与者
  • 无法在同一页面设置PHP cookie

    我在同一页面上设置 cookie 时遇到问题 我在我的网站上使用了 cookie 它工作正常 我倾向于将 php 设置为单独的文件 现在 我在同一页面上设置 cookie 但它似乎不起作用 expire time 5 setcookie r
  • 如何使用 JSP 页面中的参数运行 java 类?

    我之前编写了一个从 bash 文件执行的 java 类 现在我需要使用 Javascript HTML 按钮允许它从 JSP 页面执行 我想知道如何做到这一点 首先 我的课程是这样的 public class Sync public sta
  • WCF .svc 文件在 IIS7.5 .NET 4.0 中用作纯文本 - 不在默认网站下

    最终更新 事实证明 由于 DotNetNuke 模块的压缩问题 这是一个转移注意力的问题 我必须添加到 PageBlaster DNN 模块 所以这不再是问题 我正在将 WCF svc 文件部署到我的实时网站 http www pokerd
  • 无法打开输入文件:localhost:8080

    在 Windows 上 要从命令提示符运行 PHP Web 服务器 我键入 php s localhost 80800 t public 我收到此错误 无法打开输入文件 localhost 8080 And yet cmd php test
  • 在 SQL 中使用累积需求时在聚合级别上优化表概览

    我试图找到最好的方法来获得累积显示的总体概述的概述 即通过扣除不满足每个步骤中的累积要求的观察结果 这是表脚本和示例数据 CREATE TABLE Table A id INTEGER NOT NULL PRIMARY KEY totalA
  • Spark 中的迭代缓存与检查点

    我有一个在 Spark 上运行的迭代应用程序 我将其简化为以下代码 var anRDD org apache spark rdd RDD Int sc parallelize 0 to 1000 var c Long Int MaxValu