awsglue.utils.GlueArgumentError: argument --JOB_NAME is required
awsglue.utils.GlueArgumentError: argument --JOB_NAME is required
当我 运行 使用 Python 的 AWS Glue 中的 Glue 作业样板时,出现错误
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
glueContext = GlueContext(SparkContext.getOrCreate())
spark = glueContext.spark_session
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
job = Job(glue_context)
job.init(args[‘JOB_NAME’], args)
这是错误
in getResolvedOptions
File "/usr/lib64/python2.7/argparse.py", line 1733, in parse_known_args
namespace, args = self._parse_known_args(args, namespace)
File "/usr/lib64/python2.7/argparse.py", line 1957, in _parse_known_args
self.error(_('argument %s is required') % name)
awsglue.utils.GlueArgumentError: argument --JOB_NAME is required
这是我的代码,然后是
job.commit()
但是AWS说不提供JOBNAME。
我究竟做错了什么?
还有 getResolved 是做什么的?我尝试阅读 AWS 文档,但一无所获。
您能否提供示例脚本的参考 link。我相信 AWS 会解释说你应该使用脚本或 lambda 等开始工作。在这种情况下你会指定如下内容:
response = client.start_job_run(
JobName = 'my_test_Job',
Arguments = {
'--day_partition_key': 'partition_0',
'--hour_partition_key': 'partition_1',
'--day_partition_value': day_partition_value,
'--hour_partition_value': hour_partition_value } )
然后在您的粘合作业中,您可以按如下方式访问这些变量:
args = getResolvedOptions(sys.argv,
['JOB_NAME',
'day_partition_key',
'hour_partition_key',
'day_partition_value',
'hour_partition_value'])
因此,您在某处传递了 variable/value 作为作业名称。聪明的,尝试通过按名称 JOB_NAME 设置参数并传递一个值来 运行 作业。
让我们知道。
您不能在开发环境中运行以下命令。
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
这可能是一个迟到的回复,但为我解决了同样的错误。
将参数传递给 Glue 脚本:
在 Security configuration, script libraries, and job parameters (optional) --> Job parameters (key value)
中的 adding/editing 作业中传递作业参数,例如:
key = --JOB_NAME value= my_job
key = --input value= 'xyz'
要在 Glue 脚本中使用参数:
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
## @params: [job_name]
sc = SparkContext()
glueContext = GlueContext(SparkContext.getOrCreate())
spark = glueContext.spark_session
job = Job(glueContext)
args = getResolvedOptions(sys.argv, ['JOB_NAME','input'])
job.init(args['JOB_NAME'], args)
print("Job name is:{}, and input: {}".format(args["JOB_NAME"],args["input"]))
job.commit()
另外根据我的理解,它与开发环境无关,同时 adding/editing 仪表板参数中的胶水作业可以在不创建 lambda 函数的情况下传递。
我在遇到与 OP 类似的问题时偶然发现了这个解决方案,但使用的是 AWS Glue Python Shell 作业。上面斯瓦蒂的回答很有帮助。
如果有人试图将参数传递给 AWS Glue Python Shell 工作,下面是一个适合我的模板:
key = --JOB_NAME value= my_job
key = --input value= 'xyz'
AWS Glue Python Shell 作业脚本:
import sys
from awsglue.utils import getResolvedOptions
args = getResolvedOptions(sys.argv, ['JOB_NAME','input'])
print("Job name is:{}, and input: {}".format(args["JOB_NAME"],args["input"]))
将JOB_NAME传递给脚本使用下面的命令提交您的脚本
$HOME/bin/aws-glue-libs-glue-1.0/bin/gluesparksubmit TestScripy.py --JOB_NAME local_test
local_test 是作业名称。我仍然不知道如何传递 JOBNAME
以外的键值对
更多信息请点击此处:https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html
当我 运行 使用 Python 的 AWS Glue 中的 Glue 作业样板时,出现错误
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
glueContext = GlueContext(SparkContext.getOrCreate())
spark = glueContext.spark_session
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
job = Job(glue_context)
job.init(args[‘JOB_NAME’], args)
这是错误
in getResolvedOptions
File "/usr/lib64/python2.7/argparse.py", line 1733, in parse_known_args
namespace, args = self._parse_known_args(args, namespace)
File "/usr/lib64/python2.7/argparse.py", line 1957, in _parse_known_args
self.error(_('argument %s is required') % name)
awsglue.utils.GlueArgumentError: argument --JOB_NAME is required
这是我的代码,然后是
job.commit()
但是AWS说不提供JOBNAME。 我究竟做错了什么? 还有 getResolved 是做什么的?我尝试阅读 AWS 文档,但一无所获。
您能否提供示例脚本的参考 link。我相信 AWS 会解释说你应该使用脚本或 lambda 等开始工作。在这种情况下你会指定如下内容:
response = client.start_job_run(
JobName = 'my_test_Job',
Arguments = {
'--day_partition_key': 'partition_0',
'--hour_partition_key': 'partition_1',
'--day_partition_value': day_partition_value,
'--hour_partition_value': hour_partition_value } )
然后在您的粘合作业中,您可以按如下方式访问这些变量:
args = getResolvedOptions(sys.argv,
['JOB_NAME',
'day_partition_key',
'hour_partition_key',
'day_partition_value',
'hour_partition_value'])
因此,您在某处传递了 variable/value 作为作业名称。聪明的,尝试通过按名称 JOB_NAME 设置参数并传递一个值来 运行 作业。
让我们知道。
您不能在开发环境中运行以下命令。
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
这可能是一个迟到的回复,但为我解决了同样的错误。
将参数传递给 Glue 脚本:
在 Security configuration, script libraries, and job parameters (optional) --> Job parameters (key value)
中的 adding/editing 作业中传递作业参数,例如:
key = --JOB_NAME value= my_job
key = --input value= 'xyz'
要在 Glue 脚本中使用参数:
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
## @params: [job_name]
sc = SparkContext()
glueContext = GlueContext(SparkContext.getOrCreate())
spark = glueContext.spark_session
job = Job(glueContext)
args = getResolvedOptions(sys.argv, ['JOB_NAME','input'])
job.init(args['JOB_NAME'], args)
print("Job name is:{}, and input: {}".format(args["JOB_NAME"],args["input"]))
job.commit()
另外根据我的理解,它与开发环境无关,同时 adding/editing 仪表板参数中的胶水作业可以在不创建 lambda 函数的情况下传递。
我在遇到与 OP 类似的问题时偶然发现了这个解决方案,但使用的是 AWS Glue Python Shell 作业。上面斯瓦蒂的回答很有帮助。
如果有人试图将参数传递给 AWS Glue Python Shell 工作,下面是一个适合我的模板:
key = --JOB_NAME value= my_job
key = --input value= 'xyz'
AWS Glue Python Shell 作业脚本:
import sys
from awsglue.utils import getResolvedOptions
args = getResolvedOptions(sys.argv, ['JOB_NAME','input'])
print("Job name is:{}, and input: {}".format(args["JOB_NAME"],args["input"]))
将JOB_NAME传递给脚本使用下面的命令提交您的脚本
$HOME/bin/aws-glue-libs-glue-1.0/bin/gluesparksubmit TestScripy.py --JOB_NAME local_test
local_test 是作业名称。我仍然不知道如何传递 JOBNAME
以外的键值对更多信息请点击此处:https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html