python - 在 AWS EMR 5.0 上运行的 boto3 中向 MR 作业添加流步骤

标签 python amazon-web-services emr boto3

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

最佳答案

不幸的是,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 在集群中)。

关于python - 在 AWS EMR 5.0 上运行的 boto3 中向 MR 作业添加流步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39567608/

相关文章:

python - 使用pygame2exe时字体模块错误

python - 什么是 Perl 等同于 Python 的 type() 函数

python - 在 Python Dash 中显示 matplotlib 和 seaborn 图表不起作用。我们怎样才能让它发挥作用呢?

amazon-web-services - 无法为 nlb 提供静态 IP

linux - Redis 运行在 6379 甚至 conf 文件更改为 7000

apache-spark - 如何在 EMR 上为 Spark/Zeppelin 设置 spark.driver.memory

json - Hive Metastore 列宽限制

python-2.7 .zip 多个生成的列表

apache-spark - 如何将应用程序提交到yarn-cluster,以便包中的jar也被复制?

amazon-web-services - Terraform 0.12 aws_lambda_permission 资源每次应用都被替换