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 oggettiJob
e passa argomenti comeCommand
eRole
. 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 oggettiCrawler
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
eWaitForDependencies
alJob()
e alCrawler()
. 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 argomentoName
, un argomentoEntities
e un argomento facoltativoOnSchedule
. L'argomentoEntities
specifica tutti i processi e i crawler da includere nel flusso di lavoro. Per sapere come costruire un oggettoEntities
, 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.