Aws lambda 从AWS Lambda向粘合作业传递参数
我们需要将4个参数从AWS Lambda传递到AWS Glue job,同时触发Glue jobAws lambda 从AWS Lambda向粘合作业传递参数,aws-lambda,aws-glue,Aws Lambda,Aws Glue,我们需要将4个参数从AWS Lambda传递到AWS Glue job,同时触发Glue job response = client.start_job_run(JobName = 'my_test_Job', Arguments = { '--yr_partition_val': 2017, '--mon_partition_val': 05, '--date_partition_val': 25,
response = client.start_job_run(JobName = 'my_test_Job',
Arguments = {
'--yr_partition_val': 2017,
'--mon_partition_val': 05,
'--date_partition_val': 25,
'--hour_partition_val': 07 } )
Glue需要捕获这4个参数,以便在pyspark Glue代码中进一步处理
我已尝试在glue中使用以下参数:
import sys
from awsglue.utils import getResolvedOptions
args = getResolvedOptions(sys.argv,
['JOB_NAME',
'yr_partition_val',
'mon_partition_val',
'date_partition_val',
'hour_partition_val'])
但得到的错误是:
self.error(_('argument %s is required') % name)
awsglue.utils.GlueArgumentError: argument --JobName is required
有人能帮忙吗
“--JOB_NAME”
是胶水的内部属性,不应设置。
此外,参数区分大小写
从呼叫时-
胶水原料药
Name='job\u Name\u value'
需要指定为第一个参数
Lambda API
JobName='job\u name\u value'
需要指定为第一个参数
参见下面的示例:
current_year_full = '2019'
current_month = '01'
current_day = '21'
current_hour = '01'
int_bucket_name = 'datascience-ca-input'
glue_job_name = os.getenv("job_name")
response = gl.start_job_run(
JobName = glue_job_name,
Arguments = {
'--intermediate_bucket_name': int_bucket_name,
'--year_partition_value': current_year_full,
'--month_partition_value': current_month,
'--date_partition_value': current_day,
'--hour_partition_value': current_hour } )
得到答案,需要在粘合作业中添加--Jobname作为参数。基本上,在glue job的高级配置中,我们需要在键中添加--Jobname,在值中添加相应的glue job name。其余内容与链接中的“在AWS Glue中传递和访问Python参数”部分相同:我认为您不必添加--Jobname参数。一定还有别的问题。对我来说,代码在不显式添加--Jobname参数的情况下工作
JobName='my\u test\u Job'
应添加--JobName参数。