【问题标题】:Add streaming step to MR job in boto3 running on AWS EMR 5.0在 AWS EMR 5.0 上运行的 boto3 中向 MR 作业添加流式传输步骤
【发布时间】:2016-09-29 15:26:17
【问题描述】:

我正在尝试将我用 python 编写的几个 MR 作业从 AWS EMR 2.4 迁移到 AWS EMR 5.0。到目前为止,我使用的是 boto 2.4,但它不支持 EMR 5.0,所以我正在尝试转向 boto3。早些时候,在使用 boto 2.4 时,我使用了StreamingStep 模块来指定输入位置和输出位置,以及我的映射器和减速器源文件的位置。使用这个模块,我实际上不必创建或上传任何 jar 来运行我的工作。但是,我在 boto3 文档中的任何地方都找不到此模块的等效项。如何将 boto3 中的流式传输步骤添加到我的 MR 作业中,这样我就不必上传 jar 文件来运行它?

【问题讨论】:

    标签: python amazon-web-services emr boto3


    【解决方案1】:

    不幸的是,boto3 和 EMR API 的文档记录相当差。至少,字数统计示例如下所示:

    import boto3
    
    emr = boto3.client('emr')
    
    resp = emr.run_job_flow(
        Name='myjob',
        ReleaseLabel='emr-5.0.0',
        Instances={
            'InstanceGroups': [
                {'Name': 'master',
                 'InstanceRole': 'MASTER',
                 'InstanceType': 'c1.medium',
                 'InstanceCount': 1,
                 'Configurations': [
                     {'Classification': 'yarn-site',
                      'Properties': {'yarn.nodemanager.vmem-check-enabled': 'false'}}]},
                {'Name': 'core',
                 'InstanceRole': 'CORE',
                 'InstanceType': 'c1.medium',
                 'InstanceCount': 1,
                 'Configurations': [
                     {'Classification': 'yarn-site',
                      'Properties': {'yarn.nodemanager.vmem-check-enabled': 'false'}}]},
            ]},
        Steps=[
            {'Name': 'My word count example',
             'HadoopJarStep': {
                 'Jar': 'command-runner.jar',
                 'Args': [
                     'hadoop-streaming',
                     '-files', 's3://mybucket/wordSplitter.py#wordSplitter.py',
                     '-mapper', 'python2.7 wordSplitter.py',
                     '-input', 's3://mybucket/input/',
                     '-output', 's3://mybucket/output/',
                     '-reducer', 'aggregate']}
             }
        ],
        JobFlowRole='EMR_EC2_DefaultRole',
        ServiceRole='EMR_DefaultRole',
    )
    

    我不记得需要使用 boto 执行此操作,但在未禁用 vmem-check-enabled 的情况下正确运行简单流式作业时遇到了问题。

    此外,如果您的脚本位于 S3 上的某个位置,请使用 -files 下载它(将 #filename 附加到参数后,使下载的文件在集群中以 filename 的形式可用)。

    【讨论】:

    • 非常感谢您的帮助。有效。不幸的是,我为此设置的赏金在您回答之前几个小时就结束了。但无论如何,非常感谢。 :)
    猜你喜欢
    • 2023-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    相关资源
    最近更新 更多