web-dev-qa-db-ja.com

AWS Glueジョブの入力パラメーター

私はAWSに比較的慣れていないため、技術的な質問は少し少なくなるかもしれませんが、現在AWS Glueは最大25のジョブの作成を許可されていると指摘しています。一連のテーブルを読み込んでおり、それぞれに独自のジョブがあり、その後監査列が追加されます。各ジョブは非常に似ていますが、接続文字列のソースとターゲットを変更するだけです。

これらのジョブをパラメーター化して再利用できるようにし、適切な接続文字列を単純に渡す方法はありますか?または、さまざまな接続文字列を渡す子ジョブを呼び出すマスタージョブの設定された接続文字列をループすることもできますか?

どんな例やドキュメントも最もありがたいです

5
Sauron

以下の例では、コードでGlueジョブ入力パラメーターを使用する方法を示します。このコードは入力パラメーターを受け取り、それらをフラットファイルに書き込みます。

1)ジョブ構成で入力パラメーターを設定します。

enter image description here

2)接着ジョブのコード

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()

3)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
8
j.b.gorski