【问题标题】:Differentiate driver code and work code in Apache Spark区分 Apache Spark 中的驱动程序代码和工作代码
【发布时间】:2016-01-25 03:58:48
【问题描述】:

在 Apache Spark 程序中,我们如何知道哪部分代码将在驱动程序中执行,哪部分代码将在工作节点中执行?

【问题讨论】:

    标签: apache-spark driver execution worker


    【解决方案1】:

    其实很简单。由转换创建的闭包内发生的所有事情都发生在工作人员身上。这意味着如果在 map(...)filter(...)mapPartitions(...)groupBy*(...)aggregateBy*(...) 内部传递了某些内容,则会在工人身上执行。它包括从持久存储或远程源读取数据。

    countreduce(...)fold(...) 等操作通常在驱动程序和工作人员上执行。繁重的工作由工作人员并行执行,一些最后的步骤,例如减少从工作人员收到的输出,在驱动程序上按顺序执行。

    其他一切,例如触发动作或转换都发生在驱动程序上。特别是它意味着需要访问SparkContext 的每个操作。在 PySpark 中,它也意味着与 Py4j 网关的通信。

    【讨论】:

    • DataFrame.write (PySpark) 怎么样?它在哪里运行?
    【解决方案2】:

    所有作为参数传递给JavaRDD/JavaPairRDD/类似方法的闭包以及这些类的某些方法将由spark节点执行。其他都是驱动代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-01
      • 2020-09-07
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-13
      相关资源
      最近更新 更多