有没有更系统的方法来解决缓慢的 AWS Glue + PySpark 执行阶段?

问题描述

我有这个代码片段,我只使用 100 条记录在独立模式下在本地运行:

from awsglue.context import GlueContext
glue_context = GlueContext(sc)
glue_df = glue_context.create_dynamic_frame.from_catalog(database=db,table_name=table)
df = glue_df.toDF()
print(df.count())

架构包含 89 列,所有列都具有 string 数据类型,但 5 列具有 结构数组 数据类型。数据大小为 3.1 MB。

另外,这里有一些关于用于运行代码的环境的信息:

  • spark.executor.cores: 2
  • spark.executor.id:驱动程序
  • spark.driver.memory:1000M

问题是我不知道为什么第 1 阶段只需要计算 100 条记录就需要 12 分钟才能完成。我找不到“扫描镶木地板”和“交换”任务的含义,如下图所示: Stage 1 DAG Visualization

我的问题是,是否有更系统的方法来理解这些任务的含义。作为初学者,我非常依赖 Spark UI,但它并没有提供关于它已执行的任务的太多信息。我能够找到哪个任务花费的时间最多,但我不知道为什么会这样以及如何系统地解决它。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)