alt*_*rse 3 python amazon-web-services amazon-emr apache-spark airflow
我想创建一个通过 Amazon EMR 上的 Airflow 触发的 emr 集群。emr 集群显示在 Amazon EMR 的 UI 中,但显示错误: “VPC/子网配置无效:需要子网:指定的实例类型 m5.xlarge 只能在 VPC 中使用”
json以下是Airflow 脚本中使用的此任务的代码片段和配置详细信息格式。
我的问题是如何将有关 VPC 和子网的信息(id 代码)合并到 json 中(如果可能的话)?那里没有明确的例子。
提示:网络和 EC2 子网已创建
JOB_FLOW_OVERRIDES = {
"Name": "sentiment_analysis",
"ReleaseLabel": "emr-5.33.0",
"Applications": [{"Name": "Hadoop"}, {"Name": "Spark"}], # We want our EMR cluster to have HDFS and Spark
"Configurations": [
{
"Classification": "spark-env",
"Configurations": [
{
"Classification": "export",
"Properties": {"PYSPARK_PYTHON": "/usr/bin/python3"}, # by default EMR uses py2, change it to py3
}
],
}
],
"Instances": {
"InstanceGroups": [
{
"Name": "Master node",
"Market": "SPOT",
"InstanceRole": "MASTER",
"InstanceType": "m5.xlarge",
"InstanceCount": 1,
},
{
"Name": "Core - 2",
"Market": "SPOT", # Spot instances are a "use as available" instances
"InstanceRole": "CORE",
"InstanceType": "m5.xlarge",
"InstanceCount": 2,
},
],
"KeepJobFlowAliveWhenNoSteps": True,
"TerminationProtected": False, # this lets us programmatically terminate the cluster
},
"JobFlowRole": "EMR_EC2_DefaultRole",
"ServiceRole": "EMR_DefaultRole",
}
Run Code Online (Sandbox Code Playgroud)
create_emr_cluster = EmrCreateJobFlowOperator(
task_id="create_emr_cluster",
job_flow_overrides=JOB_FLOW_OVERRIDES,
aws_conn_id="aws_default",
emr_conn_id="emr_default",
dag=dag,
)
Run Code Online (Sandbox Code Playgroud)
小智 5
EmrCreateJobFlowOperatorcreate_job_flow来自emr.py的调用,它与boto3 emr client中的相同 api 匹配。
"Ec2SubnetId"因此,您可以将带有您的子网 ID 的项目作为值放入"Instances"字典中。
这对我在 Apache Airflow 2.0.2 上有效
| 归档时间: |
|
| 查看次数: |
2023 次 |
| 最近记录: |