首页 > 解决方案 > 使用 boto3 创建粘合作业时指定作业类型

问题描述

我正在尝试创建一个胶水等工作。我正在使用boto3。我正在使用下面的脚本。我想将它创建为 type=Spark,但下面的脚本创建了一个 type=Python Shell。它也不会禁用书签。有谁知道我需要添加什么才能使其成为 Spark 类型并禁用书签?

脚本:

response = glue_assumed_client.create_job(
    Name='mlxxxx',
    Role='Awsxxxx',
    Command={
        'Name': 'mlxxxx',
        'ScriptLocation': 's3://aws-glue-scripts-xxxxx-us-west-2/xxxx',
        'PythonVersion': '3'
    },

    Connections={
        'Connections': [
            'sxxxx',
'spxxxxxx',
        ]
    },

    Timeout=2880,
    MaxCapacity=10
)

标签: pythonpython-3.xboto3aws-glue

解决方案


要创建 Spark 作业,您必须将命令名称提及为“glueetl”,如下所述,如果您没有运行 python shell 作业,则无需在命令参数中指定 python 版本

response = client.create_job(
    Name='mlxxxyu',
    Role='Awsxxxx',
    Command={
        'Name': 'glueetl',     # <——   mention the name as glueetl to create spark job
        'ScriptLocation': 's3://aws-glue-scripts-xxxxx-us-west-2/xxxx'
    },
    Connections={
        'Connections': [
            'sxxxx',
'spxxxxxx',
        ]
    },

    Timeout=2880,
    MaxCapacity=10
)

关于作业书签,作业书签在默认情况下是禁用的,因此如果您没有为作业书签指定参数,那么创建的作业将禁用书签。

如果要显式禁用书签,则可以在 Default Arguments[1] 中指定相同的内容,如下所示。

response = client.create_job(
    Name='mlxxxyu',
    Role='Awsxxxx',
    Command={
        'Name': 'glueetl',
        'ScriptLocation': ‘s3://aws-glue-scripts-xxxxx-us-west-2/xxxx'
    },
    DefaultArguments={
        '--job-bookmark-option': 'job-bookmark-disable'
    },
    Timeout=2880,
    MaxCapacity=10
)

推荐阅读