如何使用 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 以获取驱动程序的应用程序日志。
我是 运行 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 以获取驱动程序的应用程序日志。