繁体   English   中英

AWS Glue 作业输入参数

[英]AWS Glue Job Input Parameters

我对 AWS 比较陌生,这可能不是技术问题,但目前 AWS Glue 指出最多允许创建 25 个工作岗位。 我们正在加载一系列表,每个表都有自己的工作,随后附加审计列。 每个作业都非常相似,只是简单地更改了连接字符串的源和目标。

有没有办法参数化这些作业以允许重用并简单地将正确的连接字符串传递给它们? 或者甚至可能循环通过主作业中的一组连接字符串,该主作业会调用通过不同连接字符串的子作业?

任何示例或文档将不胜感激

在下面的示例中,我展示了如何在代码中使用 Glue 作业输入参数。 此代码采用输入参数并将它们写入平面文件。

  1. 在作业配置中设置输入参数。

在此处输入图片说明

  1. 胶水作业代码
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]
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
 
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
args = getResolvedOptions(sys.argv, ['JOB_NAME','VAL1','VAL2','VAL3','DEST_FOLDER'])
job.init(args['JOB_NAME'], args)

v_list=[{"VAL1":args['VAL1'],"VAL2":args['VAL2'],"VAL3":args['VAL3']}]

df=sc.parallelize(v_list).toDF()
df.repartition(1).write.mode('overwrite').format('csv').options(header=True, delimiter = ';').save("s3://"+ args['DEST_FOLDER'] +"/")

job.commit()
  1. 还可以在使用 boto3、CloudFormation 或 StepFunctions 期间提供输入参数。 这个例子展示了如何使用 boto3 来做到这一点。
import boto3
    
def lambda_handler(event, context):
    glue = boto3.client('glue')
        
        
    myJob = glue.create_job(Name='example_job2', Role='AWSGlueServiceDefaultRole',
                            Command={'Name': 'glueetl','ScriptLocation': 's3://aws-glue-scripts/example_job'},
                            DefaultArguments={"VAL1":"value1","VAL2":"value2","VAL3":"value3"}       
                                   )
    glue.start_job_run(JobName=myJob['Name'], Arguments={"VAL1":"value11","VAL2":"value22","VAL3":"value33"})

有用的链接:

  1. https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-extensions-get-resolved-options.html
  2. https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html
  3. https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/glue.html#Glue.Client.create_job
  4. https://docs.aws.amazon.com/step-functions/latest/dg/connectors-glue.html

运行胶水作业时是否可以导出帐户? 比如它是从哪个实例触发的——DEV、Test、PROD?

暂无
暂无

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

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