当前位置: 首页 > 知识库问答 >
问题:

什么时候在Apache Spark中的驱动程序上不运行操作?

史飞尘
2023-03-14

我刚刚开始使用Spark,并在与任务的概念作斗争。

有人能帮我理解什么时候驱动程序中没有运行操作(比如减少)吗?

从火花教程中,

使用func函数聚合数据集的元素(该函数采用两个参数并返回一个参数)。该函数应该是可交换的和可结合的,以便它可以被正确地并行计算。

我目前正在尝试一个应用程序,它读取“n”个文件的目录并计算单词数。

从web UI来看,任务的数量等于文件的数量。所有的reduce函数都发生在驱动节点上。

您能否说出 reduce 函数不会在驱动程序上执行的场景。任务是否始终包含“转换操作”或仅包含“转换”

共有2个答案

养聪
2023-03-14

尽管我可能遗漏了问题的一部分,但我还是尝试一下。一项任务实际上总是一种转变和一种行动。转换是惰性的,不会提交任何内容,因此需要一个操作。您可以随时调用<code>。toDebugString,查看每个作业拆分的位置;每一级缩进都是一个新阶段。我认为驱动程序上显示的reduce函数有点用词不当,因为它将首先并行运行,然后合并结果。因此,我希望这项任务确实尽可能地在工人身上进行。

耿志义
2023-03-14

所有操作都在群集上执行,操作结果可能最终取决于驾驶员(取决于操作)。

一般来说,围绕业务逻辑编写的spark代码不是实际运行的程序——而是spark使用它来创建一个计划,该计划将在集群中执行您的代码。该计划创建了一个所有操作都可以在一个分区上完成的任务,而不需要到处移动数据。每次spark需要不同排列的数据时(例如,排序后),它将创建一个新任务,并在前面和后面的任务之间进行洗牌

 类似资料:
  • 考虑以下两行代码: 对我来说,他们看起来很相似。但是,第二行被Java编译器(1.8)拒绝,消息是“不能推断SimpleFileVisitor的类型参数<>”。 谁能解释一下,有什么问题吗?

  • 我有一个简单的代码 我觉得我身边少了点什么。 谢谢你的帮助。

  • 我是Spark的新手,我了解到转换发生在工作者身上,动作发生在驱动者身上,但是中间动作也可以发生在工作者身上(如果操作是可交换的和关联的),这给出了实际的并行性。 我查看了相关和协方差代码:https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/mllib/stat/correlation/

  • 我正在用sqlite开发一个Maven JavaFX项目,我的目标是使用jpack创建一个安装程序。第一步是创建运行时映像。所以我计划创建这个映像,确保它运行,然后使用jpack创建一个安装程序。 这些是我在Maven的依赖: 组织。OpenJFXJavaFX控制14个组织。OpenJFXJavaFXML14 org。xerial sqlite jdbc 3.30。1罐 以下是我连接数据库的方式:

  • 我有一个Android应用程序,每个屏幕分辨率包含大约150个图标。 如果我把所有图标放在所有5个主要分辨率(ldpi、mdpi、hdpi、xhdpi、xxhdpi)中,那么图标总数将达到750个。这有几个缺点: 大APK大小 将dexGuard与ant构建脚本一起使用时构建过程缓慢。它对图像进行一些处理需要一些时间。 或者,我可以只在一些分辨率中放置图标。例如,ldpi设备现在仅占市场的10%,

  • 问题内容: 我已经在eclipse中尝试过此代码: 执行时出现此错误: 如何在ubuntu中设置geckodriver位置? 问题答案: 当您在指定 GeckoDriver 的绝对路径时使用 基于Linux的系统 时,必须修剪扩展部分,即part,如下所示: __ 更新资料 如您仍在看到错误,请确保: GeckoDriver 位于指定的位置。 GeckoDriver 具有非root用户的可执行权限