使用boto3创建粘合作业时指定作业类型

时间:2019-11-07 04:34:23

标签: python python-3.x boto3 aws-glue

我正在尝试创建胶水etl作业。我正在使用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
)

2 个答案:

答案 0 :(得分:0)

请参见documentation

  

命令(字典)-[必需]执行此作业的JobCommand。

     

名称(字符串)-作业命令的名称。对于Apache Spark ETL作业,它必须为 glueetl 。对于Python Shell作业,它必须是pythonshell。

您可以使用功能

重置书签。
client.reset_job_bookmark(
    JobName='string',
    RunId='string'
)

需要JobName的地方。可以从命令response['Name']的{​​{1}}

获得

答案 1 :(得分:0)

要创建Spark作业,您必须将命令的名称称为“ glueetl”,如下所述;如果您没有运行python shell作业,则无需在Command参数中指定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
)

关于工作书签,默认情况下会禁用工作书签,因此,如果您不为工作书签指定参数,则创建的工作将禁用书签。

如果要显式禁用书签,则可以在“默认参数” [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
)