使用moto
我能够模拟 EMR 集群:
with moto.mock_emr():
client = boto3.client('emr', region_name='us-east-1')
client.run_job_flow(
Name='my_cluster',
Instances={
'MasterInstanceType': 'c3.xlarge',
'SlaveInstanceType': 'c3.xlarge',
'InstanceCount': 3,
'Placement': {'AvailabilityZone': 'us-east-1a'},
'KeepJobFlowAliveWhenNoSteps': True,
},
VisibleToAllUsers=True,
)
summary = client.list_clusters()
cluster_id = summary["Clusters"][0]["Id"]
res = client.add_job_flow_steps(
JobFlowId=cluster_id,
Steps=[
{
"Name": "foo_step",
"ActionOnFailure": "CONTINUE",
"HadoopJarStep": {"Args": [], "Jar": "command-runner.jar"},
}
],
)
添加的步骤似乎一直处于STARTING
状态。是否可以将 Spark 作业实际提交到模拟集群并在那里运行?
我正在构建一个将作业提交到 EMR 集群的实用程序,并且我想对其进行测试。我想使用这个实用程序运行一个简单的 Spark 作业,这就是问题的来源。请注意,我对 Spark 集群或测试提交的 Spark 作业的正确性不感兴趣。实际上,我对测试将作业提交到EMR并检查结果的流程更感兴趣(理想情况下,应该将其保留在模拟的 S3 存储桶上)。