使用 Apache Spark Web UI 监控作业 - AWS Glue
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

使用 Apache Spark Web UI 监控作业

可以使用 Apache Spark Web UI 监控和调试在 AWS Glue 作业系统上运行的 AWS Glue ETL 作业以及在 AWS Glue 开发终端节点上运行的 Spark 应用程序。可使用 Spark UI 检查每个作业的以下内容:

  • 每个 Spark 阶段的事件时间表

  • 作业的有向非循环图 (DAG)

  • SparkSQL 查询的物理和逻辑计划

  • 每个作业的基础 Spark 环境变量

您可以使用 AWS Glue 控制台或 AWS Command Line Interface (AWS CLI) 启用 Spark UI。在启用 Spark UI 后,AWS Glue 开发终端节点上的 AWS Glue ETL 作业和 Spark 应用程序可将 Spark 事件日志保留到您在 Amazon Simple Storage Service (Amazon S3) 中指定的位置。此外,AWS Glue 提供了一个示例 AWS CloudFormation 模板以启动 Spark 历史记录服务器并使用事件日志显示 Spark UI。当作业正在执行时以及在作业完成后,Amazon S3 中保留的事件可实时用于 Spark UI。

以下是一个示例 Spark 应用程序,该应用程序从两个数据源读取数据,执行联接转换,并以 Parquet 格式将其写入 Amazon S3。

import sys from awsglue.transforms import * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job from pyspark.sql.functions import count, when, expr, col, sum, isnull from pyspark.sql.functions import countDistinct from awsglue.dynamicframe import DynamicFrame args = getResolvedOptions(sys.argv, ['JOB_NAME']) sc = SparkContext() glueContext = GlueContext(sc) spark = glueContext.spark_session job = Job(glueContext) job.init(args['JOB_NAME']) df_persons = spark.read.json("s3://awsglue-datasets/examples/us-legislators/all/persons.json") df_memberships = spark.read.json("s3://awsglue-datasets/examples/us-legislators/all/memberships.json") df_joined = df_persons.join(df_memberships, df_persons.id == df_memberships.person_id, 'fullouter') df_joined.write.parquet("s3://aws-glue-demo-sparkui/output/") job.commit()

以下 DAG 可视化显示此 Spark 作业中的各个阶段。


      Spark UI 的屏幕截图,显示了作业 0 的 2 个已完成阶段。

以下作业事件时间表显示了各个 Spark 执行程序的启动、执行和终止。


      Spark UI 的屏幕截图,显示了各个 Spark 执行程序的已完成、失败和活动阶段。

以下屏幕显示了 SparkSQL 查询计划的详细信息:

  • 已解析的逻辑计划

  • 已分析的逻辑计划

  • 已优化的逻辑计划

  • 执行的物理计划


      SparkSQL 查询计划:已解析、已分析和已优化的逻辑计划以及执行的物理计划。

您仍可以使用 AWS Glue 连续日志记录来查看 Spark 驱动程序和执行程序的 Spark 应用程序日志流。有关更多信息,请参阅 AWS Glue 作业的连续日志记录