Creazione dello script di layout dello schema - AWS Glue

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Creazione dello script di layout dello schema

Lo script di layout del piano deve includere una funzione che genera le entità nel flusso di lavoro. Puoi nominare questa funzione come preferisci. AWS Glue utilizza il file di configurazione per determinare il nome completo della funzione.

La funzione di layout svolge le operazioni seguenti:

  • (Facoltativo) Crea un'istanza della classe di Job per creare oggetti Job e passa argomenti come Command e Role. Si tratta di proprietà del processo da specificare se lo stai creando tramite la console o l'API AWS Glue.

  • (Facoltativo) Crea un'istanza della classe di Crawler per creare oggetti Crawler e passa argomenti come il nome, il ruolo e la destinazione.

  • Per indicare le dipendenze tra gli oggetti (entità del flusso di lavoro), passa gli argomenti aggiuntivi DependsOn e WaitForDependencies al Job() e al Crawler(). Questi argomenti sono descritti più avanti in questa sezione.

  • Crea un'istanza della classe di Workflow per creare l'oggetto di flusso di lavoro che viene restituito ad AWS Glue, passando un argomento Name, un argomento Entities e un argomento facoltativo OnSchedule. L'argomento Entities specifica tutti i processi e i crawler da includere nel flusso di lavoro. Per sapere come costruire un oggetto Entities, vedi il progetto di esempio più avanti in questa sezione.

  • Restituisce l'oggetto Workflow.

Per le definizioni delle classi Job, Crawler eWorkflow, consulta Riferimento alle classi di schema AWS Glue.

La funzione di layout di deve accettare i seguenti argomenti.

Argomento Descrizione
user_params Dizionario Python di nomi e valori dei parametri del piano. Per ulteriori informazioni, consulta Specifica dei parametri dello schema.
system_params Dizionario Python contenente due proprietà: region e accountId.

Ecco uno script generatore di layout di esempio in un file chiamato Layout.py:

import argparse import sys import os import json from awsglue.blueprint.workflow import * from awsglue.blueprint.job import * from awsglue.blueprint.crawler import * def generate_layout(user_params, system_params): etl_job = Job(Name="{}_etl_job".format(user_params['WorkflowName']), Command={ "Name": "glueetl", "ScriptLocation": user_params['ScriptLocation'], "PythonVersion": "2" }, Role=user_params['PassRole']) post_process_job = Job(Name="{}_post_process".format(user_params['WorkflowName']), Command={ "Name": "pythonshell", "ScriptLocation": user_params['ScriptLocation'], "PythonVersion": "2" }, Role=user_params['PassRole'], DependsOn={ etl_job: "SUCCEEDED" }, WaitForDependencies="AND") sample_workflow = Workflow(Name=user_params['WorkflowName'], Entities=Entities(Jobs=[etl_job, post_process_job])) return sample_workflow

Lo script di esempio importa le librerie del piano richieste e include un generate_layout che genera un flusso di lavoro con due processi. Si tratta di uno script molto semplice. Uno script più complesso potrebbe impiegare logica e parametri aggiuntivi per generare un flusso di lavoro con molti processi e crawler, o anche un numero variabile di processi e crawler.

Utilizzo dell'argomento DependsOn

La'argomento DependsOn è una rappresentazione dizionario di una dipendenza di questa entità su altre entità all'interno del flusso di lavoro. Presenta il seguente formato.

DependsOn = {dependency1 : state, dependency2 : state, ...}

Le chiavi in questo dizionario rappresentano il riferimento all'oggetto dell'entità (non il nome), mentre i valori sono stringhe che corrispondono allo stato da controllare. AWS Glue deduce le attivazioni appropriate. Per gli stati validi, consulta Struttura Condition.

Ad esempio, un processo potrebbe dipendere dal completamento corretto di un crawler. Se definisci un oggetto crawler denominato crawler2 come segue:

crawler2 = Crawler(Name="my_crawler", ...)

Allora un oggetto dipendente da crawler2 includerebbe un argomento del costruttore come:

DependsOn = {crawler2 : "SUCCEEDED"}

Ad esempio:

job1 = Job(Name="Job1", ..., DependsOn = {crawler2 : "SUCCEEDED", ...})

Se DependsOn viene omesso per un'entità, tale entità dipende dal trigger di avvio del flusso di lavoro.

Utilizzo dell'argomento WaitForDependencies

L'argomento WaitForDependencies definisce se un processo o un'entità crawler deve attendere fino a che tutte le entità da cui dipende sono complete o fino a quando è completa una qualsiasi.

I valori consentiti sono "AND" o "ANY".

Utilizzo dell'argomento OnSchedule

L'argomento OnSchedule per il costruttore della classe Workflow è un'espressione cron che indica la definizione del trigger iniziale per un flusso di lavoro.

Se questo argomento è specificato, AWS Glue crea un'attivazione di pianificazione con la pianificazione corrispondente. Se non è specificato, il trigger di attivazione del flusso di lavoro è un trigger on demand.