ClosureCleaner.clean的目的

2023-11-23

Before sc.runJob调用dagScheduler.runJob,对 rdd 执行的 func 被“清理”为ClosureCleaner.clean。 为什么 Spark 必须这样做?目的是什么?


Ankur Dave,一位 Spark 提交者,写了一篇Quora 上对 ClosureCleaner 的很好的解释,转载如下:

当 Scala 构造闭包时,它确定闭包将使用哪些外部变量,并将对它们的引用存储在闭包对象中。这使得闭包能够正常工作,即使它是从与创建它的作用域不同的作用域调用的。

Scala 有时会犯错误,会捕获太多外部变量(请参阅SI-1419)。这在大多数情况下是无害的,因为额外捕获的变量根本不会被使用(尽管这可以防止它们被 GC 回收)。但这给 Spark 带来了一个问题,它必须通过网络发送闭包,以便它们可以在从属设备上运行。当闭包包含不必要的引用时,就会浪费网络带宽。更重要的是,某些引用可能指向不可序列化的对象,Spark 将无法序列化闭包。

为了解决 Scala 中的这个错误,瓶盖清洁剂在运行时遍历对象并修剪不必要的引用。由于它在运行时执行此操作,因此它比 Scala 编译器更准确。然后 Spark 可以安全地序列化清理后的闭包。

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

ClosureCleaner.clean的目的 的相关文章

  • Spark 执行器 STDOUT 到 Kubernetes STDOUT

    我在 Spark Worker 中运行的 Spark 应用程序将执行程序日志输出到特定文件路径 worker home directory app xxxxxxxx 0 stdout I used log4j properties将日志从
  • 从 pandas udf 记录

    我正在尝试从 python 转换中调用的 pandas udf 进行日志记录 因为在执行器上调用的代码不会显示在驱动程序的日志中 我一直在寻找一些选项 但到目前为止最接近的选项是这个one https stackoverflow com q
  • 如何在 Mac 上使用 homebrew 安装 apache-spark 2.3.3

    brew install apache spark只安装最新版本的 Spark 2 4 和 brew search apache spark没有给出任何其他选项 有没有办法用自制程序安装旧版本的 Spark Type brew tap ed
  • 从 SparkSession.read() 获取“org.apache.spark.sql.AnalysisException:路径不存在”[重复]

    这个问题在这里已经有答案了 我正在尝试读取提交的文件spark submit在客户端模式下连接到yarn集群 将文件放入 HDFS 不是一个选项 这是我所做的 def main args Array String if args null
  • 如何将多行标签 xml 文件转换为 dataframe

    我有一个包含多个行标签的 xml 文件 我需要将此 xml 转换为正确的数据帧 我使用了spark xml 它只处理单行标签 xml数据如下
  • Spark Scala:按小时或分钟计算两列的 DateDiff

    我在数据框中有两个时间戳列 我想获取它们的分钟差异 或者小时差异 目前我可以通过四舍五入获得日差 val df2 df1 withColumn time datediff df1 ts1 df1 ts2 但是 当我查看文档页面时https
  • 列对象不可调用 Spark

    我尝试安装 Spark 并运行教程中给出的命令 但出现以下错误 https spark apache org docs latest quick start html https spark apache org docs latest q
  • Kubernetes WatchConnectionManager:执行失败:HTTP 403

    我遇到错误Expected HTTP 101 response but was 403 Forbidden 在我使用以下命令设置新的 Kubernetes 集群之后Kubeadm当我提交下面遇到的 pyspark 示例应用程序时 只有一个主
  • ';'预期但发现“导入” - Scala 和 Spark

    我正在尝试使用 Spark 和 Scala 来编译一个独立的应用程序 我不知道为什么会收到此错误 topicModel scala 2 expected but import found error import org apache sp
  • 使用 pyspark 计算所有可能的单词对

    我有一个文本文档 我需要找到整个文档中重复单词对的可能数量 例如 我有下面的word文档 该文档有两行 每行用 分隔 文档 My name is Sam My name is Sam My name is Sam My name is Sa
  • 如何从字符串列中提取数字?

    我的要求是从列中的评论列中检索订单号comment并且总是开始于R 订单号应作为新列添加到表中 输入数据 code id mode location status comment AS SD 101 Airways hyderabad D
  • Spark日期格式问题

    我在火花日期格式中观察到奇怪的行为 实际上我需要转换日期yy to yyyy 日期转换后 日期应为 20yy 我尝试过如下 2040年后失败 import org apache spark sql functions val df Seq
  • 在 Spark MLlib 上使用 Java 中的 Breeze

    在尝试从Java使用MLlib时 使用微风矩阵运算的正确方法是什么 例如scala 中的乘法很简单 matrix vector 相应的功能在Java中是如何表达的 有一些方法 例如 colon times 可以通过正确的方式调用 breez
  • Spark/Gradle -- 在 build.gradle 中获取 IP 地址以用于启动 master 和worker

    我在基本层面上了解 build gradle 构建脚本的各个移动部分 但无法将它们全部结合在一起 在 Apache Spark 独立模式下 只需尝试从 build gradle 在同一个机器上启动 master 和worker 稍后将使用
  • 错误:无法找到或加载主类 org.apache.spark.launcher.Main [重复]

    这个问题在这里已经有答案了 如果有人能帮我解决以下路径问题 我将不胜感激 我非常怀疑这与缺少路径设置有关 但不知道如何修复它 rxie ubuntu Downloads spark echo PATH usr bin java usr lo
  • Scala 案例类忽略 Spark shell 中的导入

    我希望这个问题有一个明显的答案 我刚刚升级到 Spark v2 0 并且遇到了一个奇怪的问题火花外壳 Scala 2 11 版本 如果我输入以下最小的 Scala import java sql Timestamp case class C
  • 如何将包含多个字段的大型 csv 加载到 Spark

    新年快乐 我知道以前曾提出 回答过此类类似的问题 但是 我的问题有所不同 我有大尺寸的 csv 有 100 个字段和 100MB 我想将其加载到 Spark 1 6 进行分析 csv 的标题看起来像附件sample http www roc
  • Spark:查找前 n 个值的高性能方法

    我有一个很大的数据集 我想找到具有 n 个最高值的行 id count id1 10 id2 15 id3 5 我能想到的唯一方法是使用row number没有分区就像 val window Window orderBy desc coun
  • pyspark加入多个条件

    我如何指定很多条件 当我使用pyspark时 join 例子 与蜂巢 query select a NUMCNT b NUMCNT as RNUMCNT a POLE b POLE as RPOLE a ACTIVITE b ACTIVIT
  • 数量重新分配逻辑 - 具有外部数据集的 MapGroups

    我正在研究一种复杂的逻辑 需要将数量从一个数据集重新分配到另一个数据集 在例子中我们有Owner and Invoice 我们需要从数量中减去Invoice准确地Owner匹配 在给定汽车的给定邮政编码处 减去的数量需要重新分配回同一辆车出

随机推荐

  • SQL Server 如何处理超时请求?

    假设我使用 C 运行一个长时间运行的 SQL Server 存储过程 假设 30 分钟 进一步假设我在 C 中的查询上设置了 1 小时的超时期限 这样如果出于某种原因该 SP 花费的时间比预期长 我最终不会垄断数据库 最后 假设该存储过程中
  • 在...中找不到 JNI_OnLoad 跳过 init

    我在过去一天左右就收到了这条消息 到目前为止还没有造成任何问题 我早些时候让我的代码与我的本机库一起运行 但今天我添加了一些新功能 但它再次无法工作 LogCat 中没有显示任何错误 但我的程序只是在我的设备上立即打开和关闭 没有任何消息表
  • Jquery 移动粘性页脚

    我想要 Jquery Mobile 中的页脚 它不是固定的 但始终位于页面底部 像这样 http ryanfait com sticky footer 但在 JQuery Mobile 中 不像标准的 JQuery Mobile 固定页脚
  • 如何捕获滚动事件?

    我想实现无限滚动 下面是我的布局的简短形式 由于我有一些元素相对定位 因此 javascript 滚动事件不会触发 如何解决这个问题以便触发滚动事件并实现无限滚动 我的主要布局是 div div class wrapper div div
  • 如何获取站点的物理路径属性

    当我仅列出具有默认格式的站点时 它会显示物理路径 PS C Windows system32 gt sm Get IISServerManager PS C Windows system32 gt sm Sites Name ID Stat
  • 如何获取 WebKit 中所有受支持的 CSS 属性?

    在 Firefox Opera 和 IE 中我可以通过以下方式获取它们 gt gt for k in document body style console log k gt opacity background height textAl
  • 禁用列表视图的滚动并启用整个布局

    您好 我目前正在开发一个 Android 应用程序 它在主活动中有两个列表视图 我想要的是禁用两个列表的滚动并仅允许整个页面滚动 有什么方法可以帮助 我的代码 包com example listviewdemo import android
  • 禁用 Rails 中的资源预编译功能

    我想禁用 Rails 中的资产预编译功能 我正在开发用户可以下载代码的应用程序 我想避免更改下载的 html 文件中的 css 和 js 文件的名称 以便用户可以运行 index html 并查看所有内容 这是该应用程序 http impr
  • 在 Eclipse-CDT 中使用*相对*路径引用第 3 方库

    使用以下方式引用第 3 方 C 组件 例如包含 库 的最佳实践是什么relativeEclipse CDT 中的路径 我正在尝试参考 Boost 和 Google protobuf 我已将它们分别放在工作区的一个文件夹中 例如 home 用
  • 以编程方式设置按钮的边距

    我是 android 新手 陷入了一个非常基本的问题 我正在开发一个应用程序 其中我需要在 fling 上滑动图像 在每个图像上 我必须动态添加按钮 我正在使用 AddContentView 添加按钮来添加按钮一切工作正常 但我想动态设置按
  • 从客户端取消通过 WCF 长时间运行的任务

    我将 WCF 服务设置为 PerCall 我想知道如何从客户端发送 Start 调用来启动长时间运行的进程 并发送 Cancel 命令来取消它 我的 WCF 服务看起来像这样 ServiceBehavior InstanceContextM
  • KeyError 中错误消息的新行 - Python 3.3

    我通过 IDLE 使用 Python 3 3 运行如下代码时 raise KeyError This is a n Line break 它输出 Traceback most recent call last File test py li
  • LNK1117:选项“VERSION:1.0.0”中的语法错误[重复]

    这个问题在这里已经有答案了 当我尝试构建时 我有一个非常好奇的问题Visual Studio 2013 有人可以帮助我吗 我做错了什么 原始消息 德语 1 gt Erstellen gestartet Projekt npworpg Kon
  • Scala 类型:A 类不等于 T,其中 T 为:类型 T = A

    我正在阅读 Scala 编程 一书的第 20 7 节 我想知道为什么这段代码编译时 class Food class Fish extends Food class Grass extends Food abstract class Ani
  • Logback - 启动时不创建空日志文件

    我有一个项目 其中有很多 工具 类 它们有自己的日志记录 这些日志文件是在应用程序启动时创建的 但在使用之前保持为空 是否可以告诉 logback 在启动时不应创建空文件 但只有当它们被使用时 不知何故 我找不到有关此主题的信息 谢谢 Lo
  • Xamarin.Forms - 将 CollectionView 的高度调整为适合儿童的最小尺寸

    I have a CollectionView with a few items in it I m trying to adjust the size of the CollectionView to be just big enough
  • 如何使用Python读取MS-Word文件中表格的内容?

    如何读取和处理 DOCX 文件中表格的每个单元格的内容 我在 Windows 7 和 PyWin32 上使用 Python 3 2 来访问 MS Word 文档 我是初学者 所以我不知道到达表格单元格的正确方法 到目前为止我刚刚这样做了 i
  • 如何在Android中检查特定设备是否支持4G网络?

    我想检查一下是否特定设备具有对 4G 网络的硬件支持 我将详细说明这个问题 在应用程序中 我们有一个设置页面 用户可以在其中进行选择并允许应用程序仅在选定的网络中运行 例如 用户可以选择该应用程序仅在 WiFi 网络或仅在 3G 网络等中运
  • webapi2 返回不带引号的简单字符串

    简单场景 public IHttpActionResult Get return Ok
  • ClosureCleaner.clean的目的

    Before sc runJob调用dagScheduler runJob 对 rdd 执行的 func 被 清理 为ClosureCleaner clean 为什么 Spark 必须这样做 目的是什么 Ankur Dave 一位 Spar