gpt4 book ai didi

python - AWS Glue 中的可选作业参数?

转载 作者:行者123 更新时间:2023-11-28 20:13:54 26 4
gpt4 key购买 nike

如何为 AWS Glue 作业实现可选参数?

我创建了一个作业,该作业当前有一个字符串参数(一个 ISO 8601 日期字符串)作为 ETL 作业中使用的输入。我想将此参数设为可选,以便作业在未提供默认值时使用默认值(例如,在我的例子中使用 datetime.nowdatetime.isoformat)。我试过使用 getResolvedOptions :

import sys
from awsglue.utils import getResolvedOptions

args = getResolvedOptions(sys.argv, ['ISO_8601_STRING'])

但是,当我没有传递 --ISO_8601_STRING 作业参数时,我看到以下错误:

awsglue.utils.GlueArgumentError: argument --ISO_8601_STRING is required

最佳答案

matsevYuriy如果您只有一个可选字段,则解决方案很好。

我为 python 编写了一个包装函数,它更通用,可以处理不同的极端情况(必填字段和/或带值的可选字段)。

import sys    
from awsglue.utils import getResolvedOptions

def get_glue_args(mandatory_fields, default_optional_args):
"""
This is a wrapper of the glue function getResolvedOptions to take care of the following case :
* Handling optional arguments and/or mandatory arguments
* Optional arguments with default value
NOTE:
* DO NOT USE '-' while defining args as the getResolvedOptions with replace them with '_'
* All fields would be return as a string type with getResolvedOptions

Arguments:
mandatory_fields {list} -- list of mandatory fields for the job
default_optional_args {dict} -- dict for optional fields with their default value

Returns:
dict -- given args with default value of optional args not filled
"""
# The glue args are available in sys.argv with an extra '--'
given_optional_fields_key = list(set([i[2:] for i in sys.argv]).intersection([i for i in default_optional_args]))

args = getResolvedOptions(sys.argv,
mandatory_fields+given_optional_fields_key)

# Overwrite default value if optional args are provided
default_optional_args.update(args)

return default_optional_args

用法:

# Defining mandatory/optional args
mandatory_fields = ['my_mandatory_field_1','my_mandatory_field_2']
default_optional_args = {'optional_field_1':'myvalue1', 'optional_field_2':'myvalue2'}
# Retrieve args
args = get_glue_args(mandatory_fields, default_optional_args)
# Access element as dict with args[‘key’]

关于python - AWS Glue 中的可选作业参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52161964/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com