如何使用 Python 访问 Amazon EMR 错误消息

How to access Amazon EMR error message with Python

我是 运行 EMR 集群,使用 Airflow 启动,我需要一些方法将错误消息传递回 Airflow。 Airflow 在 Python 中运行,因此我需要在 python 中完成此操作。

目前错误日志位于配置详细信息下的“日志 URI”部分。访问这可能是一种方法,但是任何使用 python 从 emr 访问错误日志的方法都将不胜感激。

您可以使用 boto3 for example 访问 S3 中的 EMR 日志。 S3 路径为:

  • 标准错误:s3://<EMR_LOG_BUCKET_DEFINED_IN_EMR_CONFIGURATION>/logs/<CLUSTER_ID>/steps/<STEP_ID>/stderr.gz
  • 粗壮:s3://<EMR_LOG_BUCKET_DEFINED_IN_EMR_CONFIGURATION>/logs/<CLUSTER_ID>/steps/<STEP_ID>/stdout.gz
  • 控制器:s3://<EMR_LOG_BUCKET_DEFINED_IN_EMR_CONFIGURATION>/logs/<CLUSTER_ID>/steps/<STEP_ID>/controller.gz
  • 系统日志:s3://<EMR_LOG_BUCKET_DEFINED_IN_EMR_CONFIGURATION>/logs/<CLUSTER_ID>/steps/<STEP_ID>/syslog.gz

集群 ID 和步骤 ID 可以通过 XCOM 从创建 cluster/steps 的任务传递到您的不同任务。

火花警告(可能适用于其他类型的步骤): 如果您在客户端模式下提交您的步骤,就像您正在使用集群模式一样,这将起作用,您需要更改 URL 以获取驱动程序的应用程序日志。