Pianifica attività Spark e Spark SQL personalizzate

Dataplex supporta la pianificazione dell'esecuzione di codice personalizzato, come esecuzione una tantum, secondo una pianificazione regolare o on demand. On demand è in anteprima ed è disponibile solo tramite API. Puoi pianificare le trasformazioni dei dati dei clienti utilizzando Spark (Java), PySpark (limitato a Spark versione 3.2) o Spark SQL. Dataplex esegue il codice utilizzando l'elaborazione Spark serverless e uno scheduler serverless integrato.

Terminologia

Attività
Un'attività Dataplex rappresenta il lavoro che vuoi che Dataplex esegua in base a una pianificazione. Incapsula il tuo codice, i tuoi parametri e la pianificazione.
Job

Un job rappresenta una singola esecuzione di un'attività Dataplex. Ad esempio, se l'esecuzione di un'attività è pianificata quotidianamente, Dataplex creerà un job ogni giorno.

Per i job creati a partire dal 10 maggio 2023, il campo Trigger mostra il tipo di trigger di esecuzione del job.

Di seguito sono riportati i tipi di trigger di esecuzione dei job:

  • RUN_REQUEST: indica che il job è stato eseguito a causa della chiamata all'API RunTask.

  • TASK_CONFIG: indica che il job è stato eseguito a causa della configurazione dell'attività TriggerSpec.

Modalità di programmazione

Dataplex supporta le seguenti modalità di pianificazione:

Esegui una volta
Usa questa modalità per eseguire l'attività solo una volta. Puoi scegliere di eseguirlo immediatamente o in un determinato momento nel futuro. Se esegui l'attività immediatamente, potrebbero essere necessari fino a due minuti prima che l'esecuzione inizi.
Esegui in base a una programmazione
Usa questa modalità per eseguire l'attività su una frequenza ripetuta. Le ripetizioni supportate sono giornaliere, settimanali, mensili o personalizzate.
Esegui on demand

Utilizza questa modalità per eseguire un'attività creata in precedenza on demand. La modalità on demand è supportata solo dall'API RunTask. Quando il job viene eseguito on demand, Dataplex utilizza i parametri esistenti per creare un job. Puoi specificare gli argomenti e le etichette di ExecutionSpec per eseguire il job.

Prima di iniziare

  1. Abilitare l'API Dataproc.

    Abilita l'API Dataproc

  2. Abilitare l'accesso privato Google per la rete e la subnet. Abilita l'accesso privato Google sulla rete che utilizzi con le attività Dataplex. Se non specifichi una rete o una subnet durante la creazione dell'attività Dataplex, Dataplex utilizza la subnet predefinita e devi abilitare l'accesso privato Google per la subnet predefinita.

  3. Crea un account di servizio. Per pianificare attività di Dataplex è necessario un account di servizio. L'account di servizio deve appartenere al progetto in cui esegui le attività. L'account di servizio deve avere le seguenti autorizzazioni:

    • Accesso ai dati BigQuery e/o Cloud Storage in fase di elaborazione.

    • Autorizzazione Ruolo worker Dataproc per il progetto in cui esegui l'attività.

    • Se l'attività deve leggere o aggiornare l'istanza Dataproc Metastore collegata al lake, l'account di servizio deve avere il ruolo Visualizzatore o editor Dataproc Metastore. Questo ruolo deve essere concesso nel progetto in cui è configurato il lake Dataplex.

    • Se l'attività è un job Spark SQL, devi concedere all'account di servizio il ruolo Sviluppatore Dataplex. Questo ruolo deve essere concesso nel progetto in cui è configurato il lake Dataplex.

    • Se l'attività è un job Spark SQL, devi disporre delle autorizzazioni di amministratore di Cloud Storage per il bucket in cui sono scritti i risultati.

    • Per pianificare ed eseguire attività Spark SQL e Spark personalizzate, devi disporre dei ruoli IAM Lettore metadati Dataplex (roles/dataplex.metadataReader), Visualizzatore Dataplex (roles/dataplex.viewer) e Utente metadati Dataproc Metastore (roles/metastore.metadataUser) nell'account di servizio.

  4. Concedi all'utente che invia il job il ruolo Utente account di servizio (roles/iam.serviceAccountUser) nell'account di servizio. Per le istruzioni, vedi Gestire l'accesso agli account di servizio.

  5. Concedi all'account di servizio Dataplex le autorizzazioni per utilizzare l'account di servizio. Puoi trovare l'account di servizio Lake Dataplex nella pagina Dettagli del lago della console Google Cloud.

  6. Se il progetto contenente il tuo lake Dataplex è diverso dal progetto in cui deve essere eseguita l'attività, concedi all'account di servizio Dataplex il ruolo Editor Editor Dataproc per il progetto in cui esegui l'attività.

  7. Inserisci gli elementi di codice richiesti (JAR, file Python o SQL script) o i file archiviati (.jar, .tar, .tar.gz, .tgz, .zip) in un percorso di Cloud Storage.

  8. Assicurati che l'account di servizio disponga dell'autorizzazione storage.objects.get richiesta per il bucket Cloud Storage in cui sono archiviati questi artefatti di codice.

Pianificare un'attività Spark (Java o Python)

Console

  1. Nella console Google Cloud, vai alla pagina Dataplex:

    Vai a Dataplex

  2. Vai alla visualizzazione Process (Elabora).

  3. Fai clic su Crea attività.

  4. Per Crea attività Spark personalizzata, fai clic su Crea attività.

  5. Scegli un lake Dataplex.

  6. Dai un nome all'attività.

  7. Crea un ID per l'attività.

  8. Nella sezione Configurazione attività, per Tipo, seleziona Spark o PySpark.

  9. Inserisci gli argomenti pertinenti.

  10. Nel campo Account di servizio, inserisci un account di servizio utente con cui puoi eseguire l'attività Spark personalizzata.

  11. Fai clic su Continua.

  12. (Facoltativo) Imposta la pianificazione: seleziona Esegui una volta o Ripeti. Compila i campi obbligatori.

  13. Fai clic su Continua.

  14. (Facoltativo) Personalizza le risorse e Aggiungi impostazioni aggiuntive.

  15. Fai clic su Crea.

gcloud

Puoi pianificare un'attività Spark (Java / JSON) utilizzando il comando gcloud CLI. La seguente tabella elenca i parametri obbligatori e facoltativi da utilizzare:

Parametro Descrizione
--lake L'ID lake per la risorsa lake del servizio Dataplex.
--location La posizione del servizio Dataplex.
--spark-main-class La classe principale del conducente. Il file jar che contiene la classe deve essere nell'elemento CLASSPATH predefinito.
--spark-main-jar-file-uri URI Cloud Storage del file jar che contiene la classe principale.
--spark-archive-uris Facoltativo: URI Cloud Storage degli archivi da estrarre nella directory di lavoro di ciascun esecutore. Tipi di file supportati: .jar, .tar, .tar.gz, .tgz e .zip.
--spark-file-uris Facoltativo: URI Cloud Storage dei file da inserire nella directory di lavoro di ciascun esecutore.
--batch-executors-count Facoltativo: il numero totale di esecutori di job. Il valore predefinito è 2.
--batch-max-executors-count (Facoltativo) Il numero massimo di esecutori configurabili. Il valore predefinito è 1000. Se batch-max-executors-count è superiore a batch-executors-count, Dataplex abilita la scalabilità automatica.
--container-image-java-jars (Facoltativo) Un elenco di JARS Java da aggiungere al percorso della classe. L'input valido include gli URI Cloud Storage dei programmi binari di Jar.
Ad esempio, gs://bucket-name/my/path/to/file.jar.
--container-image-properties Facoltativo: chiavi di proprietà specificate in formato prefix:property.
Ad esempio, core:hadoop.tmp.dir.
Per saperne di più, consulta Proprietà del cluster.
--vpc-network-tags Facoltativo: un elenco di tag di rete da applicare al job.
--vpc-network-name Facoltativo: la rete Virtual Private Cloud in cui viene eseguito il job. Per impostazione predefinita, Dataplex utilizza la rete VPC denominata Default all'interno del progetto.
Devi utilizzarne solo uno tra --vpc-network-name e --vpc-sub-network-name.
--vpc-sub-network-name Facoltativo: la subnet VPC in cui viene eseguito il job.
Devi utilizzarne solo uno --vpc-sub-network-name o --vpc-network-name.
--trigger-type Tipo di trigger dell'attività specificata dall'utente. I valori devono essere uno dei seguenti:
ON_DEMAND - L'attività viene eseguita una volta poco dopo la creazione.
RECURRING - L'attività viene eseguita periodicamente in base a una pianificazione.
--trigger-start-time (Facoltativo) L'ora della prima esecuzione dell'attività. Il formato è `{year}-{month}-{day}T{ora}:{min}:{sec}Z`, dove il fuso orario è UTC. Ad esempio, "2017-01-15T01:30:00Z" codifica l'01:30 UTC del 15 gennaio 2017. Se questo valore non è specificato, l'attività verrà eseguita dopo l'invio se il tipo di trigger è ON_DEMAND o nella pianificazione specificata se il tipo di trigger è RECURRING.
--trigger-disabled (Facoltativo) Impedisce l'esecuzione dell'attività. Questo parametro non annulla le attività già in esecuzione, ma disabilita temporaneamente le attività RECURRING.
--trigger-max-retires (Facoltativo) Il numero di nuovi tentativi prima dell'interruzione. Imposta il valore su zero per non tentare mai di riprovare un'attività non riuscita.
--trigger-schedule Programmazione del cron per le attività in esecuzione periodicamente.
--description (Facoltativo) Descrizione dell'attività.
--display-name (Facoltativo) Nome visualizzato dell'attività.
--labels Facoltativo: elenco di coppie di etichette KEY=VALUE da aggiungere.
--execution-args Facoltativo: gli argomenti da passare all'attività. Gli argomenti possono essere una combinazione di coppie chiave/valore. Puoi passare un elenco separato da virgole di coppie chiave-valore come argomenti di esecuzione. Per passare gli argomenti di posizione, imposta la chiave su TASK_ARGS e imposta il valore su una stringa separata da virgole di tutti gli argomenti di posizione. Per utilizzare un delimitatore diverso da una virgola, fai riferimento a escape.
Se key-value e gli argomenti posizionali vengono passati insieme, TASK_ARGS verrà passato come ultimo argomento.
--execution-service-account Account di servizio da utilizzare per eseguire un'attività.
--max-job-execution-lifetime Facoltativo: la durata massima prima della scadenza dell'esecuzione del job.
--container-image Facoltativo: immagine container personalizzata per l'ambiente di runtime del job. Se non specificato, verrà utilizzata un'immagine container predefinita.
--kms-key Facoltativo: la chiave Cloud KMS da utilizzare per la crittografia nel formato:
projects/{project_number}/locations/{location_id}/keyRings/{key-ring-name}/cryptoKeys/{key-name}

Esempio Java:

glcoud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --trigger-type=ON_DEMAND –spark-main-jar-file-uri=<gcs location to java file> --execution-service-account=<service-account-email> --trigger-start-time=<timestamp after which job starts ex. 2099-01-01T00:00:00Z> --labels=key1=value1,key2=value3,key3=value3 --execution-args=arg1=value1,arg2=value3,arg3=value3 <task-id>

Esempio di PySpark:

gcloud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --trigger-type=RECURRING --trigger-schedule=<Cron schedule https://en.wikipedia.org/wiki/Cron> --spark-python-script-file=<gcs location to python script> --execution-service-account=<service-account-email> --execution-args=^::^arg1=value1::arg2=value2::TASK_ARGS="pos-arg1, pos-arg2" <task-id>

REST

Per creare un'attività, utilizza Explorer API.

Pianifica un'attività Spark SQL

gcloud

Per pianificare un'attività Spark SQL, esegui lo stesso comando gcloud CLI di Pianifica un'attività Spark (Java o Python), con i seguenti parametri aggiuntivi:

Parametro Descrizione
--spark-sql-script Il testo della query SQL. È obbligatorio specificare il valore spark-sql-script o spark-sql-script-file.
--spark-sql-script-file Un riferimento a un file di query. Questo valore può essere l'URI Cloud Storage del file di query o il percorso dei contenuti dello script SQL. È obbligatorio specificare il valore spark-sql-script o spark-sql-script-file.
--execution-args Per le attività Spark SQL, i seguenti argomenti sono obbligatori e devono essere passati come argomenti di posizione:
--output_location, <GCS uri of the output directory>
--output_format, <output file format>.
I formati supportati sono csv, json, Parquet e orc.
gcloud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --execution-service-account=<service-account-email> --trigger-type=ON_DEMAND --spark-sql-script=<sql-script> --execution-args=^::^TASK_ARGS="--output_location, <gcs folder location>, --output_format, json" <sql-task-id>

REST

Per creare un'attività, utilizza Explorer API.

Monitorare l'attività

Console

  1. Nella console Google Cloud, vai alla pagina Dataplex:

    Vai a Dataplex

  2. Vai alla visualizzazione Process (Elabora).

  3. Nella scheda Tasks è disponibile un elenco di attività, filtrate per tipo di attività.

  4. Nella colonna Nome, fai clic sull'attività da visualizzare.

  5. Fai clic sull'ID job dell'attività da visualizzare.

    La pagina Dataproc si apre nella console Google Cloud che consente di visualizzare i dettagli di monitoraggio e di output.

gcloud

La tabella seguente elenca i comandi gcloud CLI per monitorare le attività.

Azione Comando gcloud CLI
Attività nell'elenco gcloud dataplex tasks list --project=<project-name> --location=<location> --lake=<lake-id>
Visualizzazione dei dettagli delle attività gcloud dataplex tasks describe --project=<project-name> --location=<location> --lake=<lake-id> <task-id>
Elencare i job di un'attività gcloud dataplex tasks jobs list --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id>
Visualizzazione dei dettagli del job gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>

Dataplex esegue job su Dataproc Serverless (batch). Per visualizzare i log di esecuzione di un job Dataplex, procedi nel seguente modo:

  1. Recupera l'ID job Dataproc Serverless (Batch). Esegui questo comando:

    gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>
    
  2. Visualizza i log. Esegui questo comando, utilizzando l'ID job ottenuto dall'esecuzione del comando precedente:

    gcloud beta dataproc batches wait --project=<project-name> --region=<location> <job-id>
    

REST

Per get o list un'attività o un job, usa Explorer API.

Gestisci il programma

Nella console Google Cloud, all'interno di Dataplex puoi modificare la pianificazione di un'attività, eliminarla o annullare un job in corso. La seguente tabella elenca i comandi gcloud CLI per queste azioni.

Azione Comando gcloud CLI
Modifica pianificazione attività gcloud dataplex tasks update --project=<project-name> --location=<location> --lake=<lake-id> --trigger-schedule=<updated-schedule> <task-id>
Eliminare un'attività gcloud dataplex tasks delete --project=<project-name> --location=<location> --lake=<lake-id> <task-id>
Annullare un job gcloud dataplex tasks jobs cancel --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>

Passaggi successivi