从 boto3 调用 AWS Glue Pythonshell 作业时出现参数错误
arguments error while calling an AWS Glue Pythonshell job from boto3
基于 ,我有一个 AWS Glue Pythonshell 作业需要从通过 boto3 调用传递给它的参数中检索一些信息。
我的 Glue 作业名称是 test_metrics
Glue pythonshell 代码如下所示
import sys
from awsglue.utils import getResolvedOptions
args = getResolvedOptions(sys.argv,
['test_metrics',
's3_target_path_key',
's3_target_path_value'])
print ("Target path key is: ", args['s3_target_path_key'])
print ("Target Path value is: ", args['s3_target_path_value'])
调用此作业的boto3代码如下:
glue = boto3.client('glue')
response = glue.start_job_run(
JobName = 'test_metrics',
Arguments = {
'--s3_target_path_key': 's3://my_target',
'--s3_target_path_value': 's3://my_target_value'
}
)
print(response)
我在 运行 本地计算机中的 boto3 代码后看到 200
响应,但 Glue 错误日志告诉我:
test_metrics.py: error: the following arguments are required: --test_metrics
我错过了什么?
好像 documentation 有点坏了。
我必须像下面那样更新 boto3 代码才能使其正常工作
glue = boto3.client('glue')
response = glue.start_job_run(
JobName = 'test_metrics',
Arguments = {
'--test_metrics': 'test_metrics',
'--s3_target_path_key': 's3://my_target',
'--s3_target_path_value': 's3://my_target_value'} )
您要启动哪个作业? Spark 工作还是 Python shell 工作?
如果是spark作业,JOB_NAME是必须的参数。在Pythonshell工作中,根本不需要。
所以在你的 python shell 工作中,替换
args = getResolvedOptions(sys.argv,
['test_metrics',
's3_target_path_key',
's3_target_path_value'])
和
args = getResolvedOptions(sys.argv,
['s3_target_path_key',
's3_target_path_value'])
我们可以从 sys.argv
python shell 中获取粘合作业名称
基于
我的 Glue 作业名称是 test_metrics
Glue pythonshell 代码如下所示
import sys
from awsglue.utils import getResolvedOptions
args = getResolvedOptions(sys.argv,
['test_metrics',
's3_target_path_key',
's3_target_path_value'])
print ("Target path key is: ", args['s3_target_path_key'])
print ("Target Path value is: ", args['s3_target_path_value'])
调用此作业的boto3代码如下:
glue = boto3.client('glue')
response = glue.start_job_run(
JobName = 'test_metrics',
Arguments = {
'--s3_target_path_key': 's3://my_target',
'--s3_target_path_value': 's3://my_target_value'
}
)
print(response)
我在 运行 本地计算机中的 boto3 代码后看到 200
响应,但 Glue 错误日志告诉我:
test_metrics.py: error: the following arguments are required: --test_metrics
我错过了什么?
好像 documentation 有点坏了。
我必须像下面那样更新 boto3 代码才能使其正常工作
glue = boto3.client('glue')
response = glue.start_job_run(
JobName = 'test_metrics',
Arguments = {
'--test_metrics': 'test_metrics',
'--s3_target_path_key': 's3://my_target',
'--s3_target_path_value': 's3://my_target_value'} )
您要启动哪个作业? Spark 工作还是 Python shell 工作?
如果是spark作业,JOB_NAME是必须的参数。在Pythonshell工作中,根本不需要。
所以在你的 python shell 工作中,替换
args = getResolvedOptions(sys.argv,
['test_metrics',
's3_target_path_key',
's3_target_path_value'])
和
args = getResolvedOptions(sys.argv,
['s3_target_path_key',
's3_target_path_value'])
我们可以从 sys.argv
python shell 中获取粘合作业名称