AWS EMR:正在寻找从Jupyter EMR笔记本终止集群的AWS EMR命令



我的用例是:我在企业环境中处理连接到AWS EMR集群的AWS EMR笔记本(Python/PySpark/Spark内核(中的敏感数据(因此权限有限(。有时,我会将多个单元格排队,这些单元格需要不同的时间才能完成。在停止笔记本并终止集群之前,我不想一直监视我的笔记本,等待单元格完成,而是希望能够对终止AWS EMR集群的单元格进行排队。

为此,在阅读其他SO帖子/文档的基础上,我需要我的cluster-id。它似乎还发现,我需要一个实例ID。

以下代码适用于我:

!wget -q -O - http://169.254.169.254/latest/meta-data/instance-id

但由于找不到命令或权限被拒绝的问题,我无法使以下行正常工作。

!aws emr list-clusters --active --query "Clusters[*].{Name:Name}" --output text
You must specify a region. You can also configure your region by running "aws configure".

我正在寻找一个简单的命令或一组命令,我可以将其放在一个单元格中并运行以终止我的笔记本所连接的集群。我的工作流程是:在每个工作日开始时,用新名称创建一个新集群,并在工作日结束时终止该集群。考虑到这一点,我希望命令不必在每次集群名称更改时都更改。如果可能的话,我也希望避免运行aws configure

参考

AWS CLI EMR获取主节点实例ID并将其标记为

列出所有";"活动";使用Boto3 的EMR集群

从名称获取AWS EMR集群ID

这适用于emr笔记本中的emr-5.30.1:

import os
emr_cluster_id = os.environ.get('EMR_CLUSTER_ID')
emr_step_id = os.environ.get('EMR_STEP_ID')

为了安全起见,如果您想在未定义EMR_CLUSTER_ID的情况下引发异常,则可以使用以下方法:

emr_cluster_id = os.environ['EMR_CLUSTER_ID']

有关其他有用的变量,请参阅Spark History服务器环境选项卡。

然后,要终止您的集群,下面的操作应该有效(未经测试(。

sc.install_pypi_package("boto3")
import boto3
client = boto3.client('emr')
response = client.terminate_job_flows(
JobFlowIds=[emr_cluster_id]
)

相关内容

  • 没有找到相关文章

最新更新