我实际上可以在模拟的EMR群集上运行Spark作业吗?

时间:2020-03-10 13:21:15

标签: python apache-spark amazon-emr moto

使用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存储桶中)。

1 个答案:

答案 0 :(得分:1)

不可能,mock_emr 只是一个模拟或(真实请求的代理)。您可以使用 mock_s3 开发一个 spark 并将 conf 发送到 spark 以根据您的目的读取模拟的 s3

相关问题