繁体   English   中英

如何以编程方式使用boto3 create_job将参数传递给粘合作业

[英]how to pass parameter to glue job using boto3 create_job programmatically

我正在使用 boto3 创建作业脚本创建粘合作业,并尝试将默认参数值传递给路径位置以运行不同的 s3 存储桶文件。

下面的脚本是示例代码,它将创建粘合 ETL 作业。 如何使用 args 将参数传递给 sourcepath?

示例脚本:

import boto3
import json
client = boto3.client('glue')
response = client.create_job(
   Name='jobname',
   Description='Glue Job',
   LogUri='s3://bucket/logs/',
   Role='arn:aws:iam::',
   ExecutionProperty={
       'MaxConcurrentRuns': 3
   },
   Command={
       'Name': 'glue',
       'ScriptLocation': 's3://bucketname/gluejob.py',
       'PythonVersion': '3'
   },
   MaxRetries = 1,
   Timeout=123,
   GlueVersion='3.0',
   NumberOfWorkers=2,
   WorkerType='G.1X',
   DefaultArguments = {'s3sourcepath':'s3://bucketname/csvfile.csv'}
   CodeGenConfigurationNodes = {
   'node-1':{
       'S3CsvSource': {
               'Name': 's3_source',
               'Paths': [
                   args['s3sourcepath'], ------ here how to pass default arguments 
               ],
               'Separator': 'comma',
               'QuoteChar': 'quote',
               'WithHeader': True,
               'WriteHeader': True
           }
)

提前致谢。

您首先需要检索使用 getResolvedOptions 传递的 arguments。 像这样的东西:

import sys
from awsglue.utils import getResolvedOptions

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

现在您应该可以使用args['s3sourcepath']

您可以阅读内容以获取更多信息。

不确定是否可以在创建 Glue 作业时设置此运行时参数。 你可以在调用 start_job_run() 时尝试设置运行时参数吗? 您可以在此处参考代码示例

response = client.start_job_run(
           JobName = 'my_test_Job',
           Arguments = {
             '--s3sourcepath':   's3 path',
              } )

在您的代码中,作业命令以glue形式给出。

Command={
   'Name': 'glue',
   'ScriptLocation': 's3://bucketname/gluejob.py',
   'PythonVersion': '3'

},

但是这里的文档说它应该是glueetl

Command={
       'Name': 'glueetl',
       'ScriptLocation': 's3://bucketname/gluejob.py',
       'PythonVersion': '3'
   },

你能试试吗

'Name': 'glueetl'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM