Apache Spark 中的 reduce() 与 Fold()

2024-04-02

有什么区别reduce vs. fold关于它们的技术实现?

我知道他们的签名不同fold接受添加到每个分区输出的附加参数(即初始值)。

  • 有人可以讲述这两个操作的用例吗?
  • 在考虑使用 0 的情况下哪个会表现更好fold?

提前致谢。


就性能而言,没有任何实际差异:

  • RDD.fold行动正在使用fold在分区上Iterators这是使用实现的foldLeft.
  • RDD.reduce正在使用reduceLeft在分区上Iterators.

两种方法都使用简单的循环来保持可变累加器和顺序处理分区foldLeft像这样实施 https://github.com/scala/scala/blob/2.12.x/src/library/scala/collection/TraversableOnce.scala#L155:

foreach (x => result = op(result, x))

and reduceLeft像这样 https://github.com/scala/scala/blob/2.12.x/src/library/scala/collection/TraversableOnce.scala#L178:

for (x <- self) {
  if (first) {
    ...
  }
  else acc = op(acc, x)
}

Spark 中这些方法之间的实际差异仅与它们在空集合上的行为以及使用可变缓冲区的能力有关(可以说它与性能有关)。你会发现一些讨论为什么 Spark 中需要折叠操作? https://stackoverflow.com/q/34529953/1560062

而且整体处理模型没有区别:

  • 每个分区都使用单个线程顺序处理。
  • 使用多个执行器/执行器线程并行处理分区。
  • 最终合并是使用驱动程序上的单个线程顺序执行的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache Spark 中的 reduce() 与 Fold() 的相关文章

  • 在spark-kafka中使用schema将ConsumerRecord值转换为Dataframe

    我正在使用 Spark 2 0 2 和 Kafka 0 11 0 并且 我正在尝试在火花流中使用来自卡夫卡的消息 以下是代码 val topics notes val kafkaParams Map String Object bootst
  • 为什么Racket中foldl的定义方式很奇怪?

    在 Haskell 中 与许多其他函数式语言一样 函数foldl被定义为 例如 foldl 0 1 2 3 4 10 这没关系 因为foldl 0 1 2 3 4 根据定义 0 1 2 3 4 但是 在 球拍 中 foldl 0 1 2 3
  • Scala 中的随机列表[重复]

    这个问题在这里已经有答案了 我对 scala 中的随机播放列表有疑问 使用scala util Random 例如我有 val a cyan val b magenta val c yellow val d key val color Ra
  • 使用 scalapb 在 Spark Streaming 中解码 Proto Buf 消息时出错

    这是一个 Spark Streaming 应用程序 它使用编码的 Kafka 消息Proto Buf Using scalapb图书馆 我收到以下错误 请帮忙 gt com google protobuf InvalidProtocolBu
  • Scala 的“神奇”函数列表

    在哪里可以找到 Scala 的 神奇 函数列表 例如apply unapply update etc 魔法函数是指编译器的某些语法糖使用的函数 例如 o update x y lt gt o x y 我用谷歌搜索了一些组合scala mag
  • 如何调用 Scala 抽象类型的构造函数?

    我试图弄清楚如何调用 Scala 抽象类型的构造函数 class Journey val length Int class PlaneJourney length Int extends Journey length class BoatJ
  • Spark:查找前 n 个值的高性能方法

    我有一个很大的数据集 我想找到具有 n 个最高值的行 id count id1 10 id2 15 id3 5 我能想到的唯一方法是使用row number没有分区就像 val window Window orderBy desc coun
  • 如何使用 Scala 从 Spark 更新 ORC Hive 表

    我想更新 orc 格式的 hive 表 我可以从 ambari hive 视图进行更新 但无法从 sacla spark shell 运行相同的更新语句 objHiveContext sql select from table name 能
  • 用于共享大型不可变对象的工厂/缓存策略

    我的问题很像上一篇文章最佳哈希集初始化 Scala Java https stackoverflow com questions 14714900 optimal hashset initialization scala java 我想用的
  • 将下划线分配给变量。下划线是做什么的?

    最近我遇到了这样的代码 var myVariable variableKind 这似乎是一种分配方式null to myVariable 谁能解释一下背后的理由 在这种情况下 分配之间有什么区别 and null到一个变量 它使用默认值初始
  • 使用 apply 方法的泛型类型的 Scala 工厂?

    假设我有以下特征 它定义了一个接口并采用几个类型参数 trait Foo A B implementation details not important 我想使用伴随对象作为该特征的具体实现的工厂 我还想强制用户使用Foo接口而不是子类所
  • Python 相当于 Scala 案例类

    Python 中是否有与 Scala 的 Case Class 等效的东西 就像自动生成分配给字段而无需编写样板的构造函数一样 当前执行此操作的现代方法 从 Python 3 7 开始 是使用数据类 https www python org
  • 你能在 scala 中使用 varargs 柯里化一个函数吗?

    我正在考虑如何用可变参数柯里化一种方法 然后我意识到我什至不知道如何去做 理想情况下 它应该让您可以随时开始使用它 然后以可迭代结束 def concat strs String strs mkString val curriedConca
  • 在泛型方法中返回原始集合类型

    假设我们想要创建一个像这样的函数minBy返回集合中同等极简主义的所有元素 def multiMinBy A B Ordering xs Traversable A f A gt B val minVal f xs minBy f xs f
  • Spark-1.6.1 上的 DMLC 的 XGBoost-4j

    我正在尝试在 Spark 1 6 1 上使用 DMLC 的 XGBoost 实现 我能够使用 XGBoost 训练我的数据 但在预测方面面临困难 我实际上想以在 Apache Spark mllib 库中完成的方式进行预测 这有助于计算训练
  • 在 Javascript 中减少/分组数组

    基于this https stackoverflow com a 40774906 3254598例如 我想以稍微不同的方式按对象进行分组 结果应该如下 key audi items make audi model r8 year 2012
  • pyspark通过特定键加入rdd

    我有两个 rdd 需要将它们连接在一起 它们看起来像下面这样 RDD1 u 2 u 100 2 u 1 u 300 1 u 1 u 200 1 RDD2 u 1 u 2 u 1 u 3 我想要的输出是 u 1 u 2 u 100 2 所以我
  • 函数式 Scala 中的选择排序

    我正在学习 Scala 编程 并编写了选择排序算法的快速实现 然而 由于我对函数式编程还不太了解 所以在转换为更 Scala 风格时遇到了困难 对于 Scala 程序员来说 如何使用 Lists 和 vals 来做到这一点 而不是回到我的命
  • 在 Windows 7 64 位中删除 Spark 临时目录时出现异常

    我正在尝试在 Windows 7 64 位中运行 Spark 作业的单元测试 我有 HADOOP HOME D winutils winutils path D winutils bin winutils exe 我运行了以下命令 winu
  • sh / Bash shell 脚本中 !# (bang-pound) 的含义是什么?

    我想了解这个 Scala 脚本是如何工作的 usr bin env bash exec scala 0 object HelloWorld def main args Array String println Hello world arg

随机推荐

  • Javascript:如何将相同的事件侦听器重新附加到重复出现的元素?

    在我的代码中 我有一个 h1 容器 里面有 h1 元素 如下所示 div h1 Title H1 h1 div 然后 我将一个事件侦听器附加到 h1 元素 以便在用户单击 h1 元素时提醒 h1 文本 var h1 document get
  • Java 8 中函数式接口的用途是什么?

    我在 Java 8 中遇到了一个新术语 函数式接口 我在使用时只能找到它的一种用途lambda 表达式 Java 8提供了一些内置的函数式接口 如果我们想定义任何函数式接口 那么我们可以使用 FunctionalInterface注解 它将
  • python中装饰器类的解释

    在阅读一些 python 模块时 我遇到了这个装饰器类 this decorator lets me use methods as both static and instance methods class omnimethod obje
  • 有什么方法可以让 git 直接使用 .pac (代理自动配置)脚本吗?

    我的公司网络使用 PAC 脚本 http proxyconf xxx yy ss proxy pac http proxyconf xxx yy ss proxy pac 在 git config 命令中使用 PAC 脚本不起作用 git
  • 使用 ECB 模式的 CryptoJS AES 加密使用相同的参数会产生不同的结果

    正如本文中提到的answer https stackoverflow com a 47096284 940030 我可以使用 ECB 模式将转换后的值反转回纯文本 而不仅仅是将其与另一个哈希值进行比较 但是 使用以下代码片段 const x
  • 排序链表最简单的方法

    我正在尝试为链表编写非常基本的排序方法 我遇到了未处理的异常 我犯了什么错误 这是我的代码 struct LinkedNode structure for linked list int data struct LinkedNode nex
  • 以分类变量(枚举)作为输入的神经网络

    我正在尝试使用神经网络解决一些机器学习问题 主要是使用NEAT进化 增强拓扑的神经进化 我的一些输入变量是连续的 但其中一些具有分类性质 例如 物种 狮子 豹子 老虎 美洲虎 行业 医疗保健 保险 金融 IT 广告 起初 我想通过将类别映射
  • 如何在 Magento 中通过订单 ID 获取发货增量 ID

    大家好 有人可以告诉我如何在 Magento 中通过订单 id 获取发货增量 id 吗 我需要这个 因为我使用外部 php 文件向货件添加跟踪信息 并且它需要货件 ID 谢谢你的帮助 我正在使用下面的代码添加跟踪信息 shipmentInc
  • 如果我需要 mysql 视图和 nextJS 中的存储过程,prisma 有什么好处

    我开始学习 prisma 来替换我的 nextJS 应用程序中的 nodejs 后端 似乎 prisma 不适用于在我的 mysql 数据库中创建的视图和存储过程 如果我不能只使用视图和存储过程 那么切换到 prisma 是否还有意义 这允
  • Ember.js:从集合中检索随机元素

    我有这样的路线 App RandomThingRoute Ember Route extend model function return App Thing find random 这需要一趟 things randomAPI端点 我在控
  • 适用于 Windows 的 MinGW gcj?

    我找不到 MinGW 的 gcj 二进制文件的链接 它没有出现在 MinGW get 列表中 并且我找不到二进制文件the site http www mingw org wiki Compile with gcj 它真的存在吗 我在哪里可
  • C 编译错误:数组类型具有不完整的元素类型

    include
  • 将对象类定义导入到 Active Directory (AD LDS)

    我在将对象类定义从 OpenDS 迁移到 Active Directory 时陷入困境 我已经成功迁移了some定义 并且可以使用我的 Java 应用程序读取 写入 AD 但现在我陷入困境 在我的 OpenDS 模式描述中 我有这样的内容
  • 无法使用“writes”将通用案例类转换为 json

    我有一个类 我希望能够将其转换为 json case class Page T items Seq T pageIndex Int pageSize Int totalCount Long object Page implicit val
  • 使用 JQuery 以重力形式获取价值

    我正在尝试向我的重力形式 WordPress 添加一个公式 其中包括指数 我无法使用内置计算器 因为没有指数函数 它基本上是一个贷款计算器 r 率 form id 4 12 p 贷款金额 form id 1 D 持续时间 form id 2
  • WPF:截取屏幕截图并保存[重复]

    这个问题在这里已经有答案了 我是 WPF 应用程序的新手 我尝试四处寻找是否可以找到适用于此的东西 但到目前为止我还没有找到任何有用的东西 我想这是因为其中大部分都已经过时了 我想截取整个桌面 即所有显示器 的屏幕截图并将其另存为 jpg当
  • Javascript for 循环缺少中间部分:错误还是高级?

    我正在为工作项目调试另一位开发人员的 Javascript 我可能是一名中级 Javascript 开发人员 在美好的一天 我遇到了一个似乎已损坏的 for 循环 for i 0 i 谁能告诉我这是否确实是一个错误 或者在某些情况下这是否是
  • 如何像签署程序集一样签署 ZIP 文件?

    我有一个包含签名的 Net 程序集的 ZIP 文件 是否可以通过工具来签名而不是代码 而是包含这些程序集的 ZIP 文件 我希望能够在代码方面处理这个问题 比如 if myzipfile IsSignedBy name DezipFile
  • 为了性能而将python与c集成是否合理?

    我喜欢使用 python 来做几乎所有的事情 并且总是清楚地意识到 如果由于某种原因我要在 python 代码中找到瓶颈 由于 python 的限制 我总是可以使用集成到我的代码中的 C 脚本 但是 当我开始读一本guide http ww
  • Apache Spark 中的 reduce() 与 Fold()

    有什么区别reduce vs fold关于它们的技术实现 我知道他们的签名不同fold接受添加到每个分区输出的附加参数 即初始值 有人可以讲述这两个操作的用例吗 在考虑使用 0 的情况下哪个会表现更好fold 提前致谢 就性能而言 没有任何