【问题标题】:Let me know in the following pseudo code ,which execute in driver and which execute in executor在下面的伪代码中让我知道,哪些在驱动程序中执行,哪些在执行程序中执行
【发布时间】:2019-07-13 17:40:08
【问题描述】:

在下面的伪代码中,哪些在驱动程序中执行,哪些在执行程序中执行??为什么??

Dataset1 = Dataset 0(从 Dataset 0 派生 Dataset1)
数据集 2 = 数据集 1 ,数据集 0
对数据集 2 的操作
数据集 3 = 数据集 1,数据集 2

下面的伪代码让我知道

dataframe = spark.sql("select * from emp") dataframe=dataframe.withColumn("fullname",dataframe.empfirstname+dataframe.emplastname) 数据帧.count() 数据框.show()

【问题讨论】:

  • 所有转换都将在工作节点(即执行程序)中运行,所有操作都将在驱动程序节点中运行。 .count 和 .show 将在驱动程序节点上运行。将在工作节点上休息。
  • 在上述情况下,我从现有数据集派生数据集。即它发生在 Driver 或 Executor 中吗??

标签: apache-spark pyspark


【解决方案1】:

两者兼而有之。在驱动程序上,spark 将获取您的代码并编译执行图并创建一系列基于 rdd 的转换,这些转换将主要在执行程序上运行。 Spark 足够聪明,可以识别出一些数据帧小到可以直接从驱动程序中读取。切换点通常为 10MB。一旦大部分执行发生在作品上,.show(..) 函数将从执行器加载输出数据以显示。使用 .explain() 获取 spark 打印查询计划。

【讨论】:

  • 感谢安德鲁的快速回复,我可以获得任何参考文档或链接以了解更多信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多