Aggiunta di processi di streaming ETL in AWS Glue - 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à.

Aggiunta di processi di streaming ETL in AWS Glue

È possibile creare operazioni in streaming di estrazione, trasformazione e caricamento (ETL) che vengono eseguite continuamente, consumano dati da origini di streaming come Amazon Kinesis Data Streams, Apache Kafka e Amazon Managed Streaming for Apache Kafka (Amazon MSK). I processi puliscono e trasformano i dati, quindi caricano i risultati in data lake Amazon S3 o datastore JDBC.

Inoltre, è possibile produrre dati per i flussi di dati Amazon Kinesis. Questa funzionalità è disponibile solo per la scrittura di AWS Glue script. Per ulteriori informazioni, consulta Connessioni Kinesis.

Per impostazione predefinita, AWS Glue elabora e scrive i dati in finestre di 100 secondi. Ciò consente di elaborare i dati in modo efficiente e di eseguire aggregazioni su dati che arrivano più tardi del previsto. È possibile modificare questa dimensione della finestra per aumentare la tempestività o la precisione dell'aggregazione. AWS Glue I processi di streaming utilizzano i checkpoint anziché i segnalibri di lavoro per tenere traccia dei dati letti.

Nota

AWS Glue fatture orarie per lo streaming delle operazioni ETL mentre sono in esecuzione.

Questo video illustra le problematiche relative ai costi dello streaming ETL e le funzionalità di riduzione dei costi di. AWS Glue

La creazione di un processo di streaming ETL prevede i seguenti passaggi:

  1. Per un'origine di streaming Apache Kafka, creare una connessione AWS Glue alla sorgente Kafka o al cluster Amazon MSK.

  2. Creare manualmente un catalogo dati per l'origine di streaming.

  3. Creare un processo ETL per l'origine dati di streaming. Definire le proprietà del processo specifiche dello streaming e fornire uno script personalizzato o, facoltativamente, modificare lo script generato.

Per ulteriori informazioni, consulta Streaming ETL in AWS Glue.

Quando si crea un processo ETL di streaming per Amazon Kinesis Data Streams, non è necessario creare una connessione AWS Glue. Tuttavia, se è presente una connessione collegata al flusso di lavoro ETL AWS Glue con Kinesis Data Streams come origine, quindi è necessario un endpoint cloud privato virtuale (VPC) a Kinesis. Per ulteriori informazioni, consulta Creazione di un endpoint dell'interfaccia nella Guida per l'utente di Amazon VPC. Quando si specifica un flusso Amazon Kinesis Data Streams in un altro account, è necessario impostare i ruoli e le politiche per consentire l'accesso multi-account. Per ulteriori informazioni, consulta Esempio: lettura da un flusso Kinesis in un account diverso.

I processi ETL in streaming di AWS Glue possono rilevare automaticamente i dati compressi, decomprimere in modo trasparente i dati in streaming, eseguire le consuete trasformazioni sulla sorgente di ingresso e caricare nell'archivio di output.

AWS Glue supporta la decompressione automatica per i seguenti tipi di compressione, dato il formato di input:

Tipo di compressione File Avro Dato Avro JSON CSV Grok
BZIP2
GZIP No
SNAPPY Sì (Snappy raw) Sì (Snappy framed) Sì (Snappy framed) Sì (Snappy framed) Sì (Snappy framed)
XZ
ZSTD No No No No
DEFLATE

Creazione di una connessione AWS Glue per un flusso di dati Apache Kafka

Per leggere da un flusso Apache Kafka, è necessario creare una connessione AWS Glue.

Come creare una connessione AWS Glue per un'origine Kafka (Console)
  1. Apri la console all'indirizzo https://console.aws.amazon.com/glue/ AWS Glue .

  2. Nel riquadro di navigazione, in Data catalog (Catalogo dati), seleziona Connections (Connessioni).

  3. Scegliere Aggiungi connessione e, nella pagina Imposta proprietà della connessione, immettere un nome per la connessione.

    Nota

    Per ulteriori informazioni sulla specifica delle proprietà della connessione, consulta Proprietà della connessione di AWS Glue.

  4. Per Tipo di connessione, scegli Kafka.

  5. Per gli URL dei server di bootstrap Kafka, immettere il numero host e porta per i broker bootstrap per il cluster Amazon MSK o il cluster Apache Kafka. Utilizza solo endpoint Transport Layer Security (TLS) per stabilire la connessione iniziale al cluster Kafka. Gli endpoint in testo normale non sono supportati.

    Di seguito è riportato un elenco di esempio di coppie di nomi di host e numeri di porta per un cluster Amazon MSK.

    myserver1.kafka.us-east-1.amazonaws.com:9094,myserver2.kafka.us-east-1.amazonaws.com:9094, myserver3.kafka.us-east-1.amazonaws.com:9094

    Per ulteriori informazioni su come ottenere le informazioni del broker bootstrap, consulta Ottenere i broker bootstrap per un cluster Amazon MSK in Amazon Managed Streaming for Apache Kafka: Guida per gli sviluppatori.

  6. Se si desidera una connessione sicura all'origine dati Kafka, seleziona Require SSL connection (Connessione SSL necessaria), e per Kafka private CA certificate location (Posizione del certificato emesso da una CA Kafka privata), inserisci un percorso Amazon S3 valido per un certificato SSL personalizzato.

    Per una connessione SSL a Kafka autogestito, il certificato personalizzato è obbligatorio. P Amazon MSK è facoltativo.

    Per ulteriori informazioni su come specificare un certificato personalizzato per Kafka, consulta Proprietà della connessione SSL AWS Glue.

  7. Usa AWS Glue Studio o la AWS CLI per specificare un metodo di autenticazione del client Kafka. Per accedere, AWS Glue Studio seleziona AWS Gluedal menu ETL nel riquadro di navigazione a sinistra.

    Per ulteriori informazioni sui metodi di autenticazione client Kafka, consulta AWS Glue Proprietà di connessione Kafka per l'autenticazione client .

  8. Opzionalmente, inserisci una descrizione, quindi scegli Next (Successivo).

  9. Per un cluster Amazon MSK, specifica il cloud privato virtuale (VPC), la sottorete e il gruppo di sicurezza. Le informazioni VPC sono opzionali per Kafka autogestito.

  10. Scegli Next (Successivo) per esaminare tutte le proprietà della connessione, quindi scegli Finish (Termina).

Per ulteriori informazioni sulle connessioni AWS Glue, consulta Connessione ai dati.

AWS Glue Proprietà di connessione Kafka per l'autenticazione client

Autenticazione SASL/GSSAPI (Kerberos)

La scelta di questo metodo di autenticazione consentirà di specificare le proprietà Kerberos.

Keytab Kerberos

Scegliere la posizione del file keytab. Un keytab memorizza le chiavi a lungo termine per uno o più principali. Per ulteriori informazioni, consulta la Documentazione di MIT Kerberos: keytab.

File Kerberos krb5.conf

Scegliere il file krb5.conf. Contiene l'area di autenticazione predefinita (una rete logica, simile a un dominio, che definisce un gruppo di sistemi sotto lo stesso KDC) e la posizione del server KDC. Per ulteriori informazioni, consulta la Documentazione di MIT Kerberos: krb5.conf.

Principale Kerberos e nome del servizio Kerberos

Immettere il nome del principale e il nome del servizio Kerberos. Per ulteriori informazioni, consulta Documentazione MIT Kerberos: principale Kerberos.

Autenticazione SASL/SCRAM-SHA-512

Scegliere questo metodo di autenticazione consentirà di specificare le credenziali di autenticazione.

AWS Secrets Manager

Cercare il token nella casella Cerca digitando il nome o l'ARN.

Nome utente e password del provider direttamente

Cercare il token nella casella Cerca digitando il nome o l'ARN.

Autenticazione client SSL

Scegliere questo metodo di autenticazione consente di selezionare la posizione del keystore client Kafka navigando su Amazon S3. Facoltativamente, è possibile inserire la password del keystore del client Kafka e la password della chiave del client Kafka.

Autenticazione IAM

Questo metodo di autenticazione non richiede specifiche aggiuntive ed è applicabile solo quando la sorgente di streaming è MSK Kafka.

autenticazione SASL/PLAIN

La scelta di questo metodo di autenticazione consente di specificare le credenziali di autenticazione.

Creazione di un catalogo dati per un'origine di streaming

Una tabella del catalogo dati che specifica le proprietà del flusso dei dati di origine, incluso lo schema dei dati, può essere creata manualmente per una sorgente di streaming. Questa tabella viene utilizzata come origine dati per il processo di streaming ETL.

Se non si conosce lo schema dei dati nel flusso dei dati di origine, è possibile creare la tabella senza uno schema. Quindi, quando si crea il processo ETL di streaming, è possibile attivare la AWS Gluefunzione di rilevamento dello schema. AWS Glue determina lo schema dai dati di streaming.

Usa la AWS Glueconsole, il AWS Command Line Interface (AWS CLI) o l'AWS GlueAPI per creare la tabella. Per informazioni sulla creazione manuale di una tabella con la console AWS Glue, vedere Creazione di tabelle.

Nota

Non puoi usare la AWS Lake Formation console per creare la tabella; devi usare la AWS Glue console.

Considera inoltre le seguenti informazioni per le origini di streaming in formato Avro o per i dati di log a cui è possibile applicare i pattern Grok.

Origine dati Kinesis

Durante la creazione della tabella, impostare le seguenti proprietà di streaming ETL (console).

Tipo di origine

Kinesis

Per una fonte Kinesis nello stesso account:
Regione

La AWS regione in cui risiede il servizio Amazon Kinesis Data Streams. Il nome della regione e del flusso Kinesis sono tradotti insieme in un flusso ARN.

Esempio: https://kinesis.us-east-1.amazonaws.com

Nome del flusso Kinesis

Nome del flusso come descritto in Creazione di un flusso nella Guida per gli sviluppatori Amazon Kinesis Data Streams.

Per un'origine Kinesis in un altro account, fai riferimento a questo esempio per configurare i ruoli e i criteri per consentire l'accesso a più account. Configura queste impostazioni:
Flusso ARN

L'ARN del flusso dei dati Kinesis con il quale il consumatore è registrato. Per ulteriori informazioni, consulta Amazon Resource Names (ARNs) e AWS Service Namespaces nel. Riferimenti generali di AWS

ARN del ruolo assunto

L'Amazon Resource Name (ARN) del ruolo assegnato al ruolo da assumere.

Nome sessione (facoltativo)

Un identificatore della sessione del ruolo assunto.

Utilizza il nome della sessione del ruolo per identificare in modo univoco una sessione quando lo stesso ruolo viene assunto da diverse entità principali o per motivi diversi. In scenari multi-account, l'account proprietario del ruolo può vedere il nome della sessione del ruolo e può registrarlo. Il nome della sessione del ruolo viene utilizzato anche nell'ARN dell'entità ruolo assunto. Ciò significa che le successive richieste API tra più account che utilizzano le credenziali di sicurezza temporanee esporranno il nome della sessione del ruolo all'account esterno nei relativi log. AWS CloudTrail

Per impostare le proprietà di streaming ETL per Amazon Kinesis Data Streams (API AWS Glue o AWS CLI)
  • Per impostare le proprietà di streaming ETL per un'origine Kinesis nello stesso account, specifica i parametri streamName e endpointUrl nella struttura StorageDescriptor dell'operazione API CreateTable o del comando CLI create_table.

    "StorageDescriptor": { "Parameters": { "typeOfData": "kinesis", "streamName": "sample-stream", "endpointUrl": "https://kinesis.us-east-1.amazonaws.com" } ... }

    In alternativa, specifica il streamARN.

    "StorageDescriptor": { "Parameters": { "typeOfData": "kinesis", "streamARN": "arn:aws:kinesis:us-east-1:123456789:stream/sample-stream" } ... }
  • Per impostare le proprietà di streaming ETL per un'origine Kinesis nello stesso account, specifica i parametri streamARN, awsSTSRoleARN e awsSTSSessionName (facoltativo) nella struttura StorageDescriptor dell'operazione API CreateTable o del comando CLI create_table.

    "StorageDescriptor": { "Parameters": { "typeOfData": "kinesis", "streamARN": "arn:aws:kinesis:us-east-1:123456789:stream/sample-stream", "awsSTSRoleARN": "arn:aws:iam::123456789:role/sample-assume-role-arn", "awsSTSSessionName": "optional-session" } ... }

Origine dati Kafka

Durante la creazione della tabella, impostare le seguenti proprietà di streaming ETL (console).

Tipo di origine

Kafka

Per una fonte Kafka:
Nome argomento

Nome argomento specificato in Kafka.

Connessione

Connessione AWS Glue che fa riferimento a un'origine Kafka, come descritto in Creazione di una connessione AWS Glue per un flusso di dati Apache Kafka.

Origine della tabella di AWS Glue Schema Registry

Per utilizzare AWS Glue Schema Registry per i processi di streaming, segui le istruzioni all'indirizzo Caso d'uso: AWS Glue Data Catalog su come creare o aggiornare una tabella Schema Registry.

Attualmente, lo streaming AWS Glue supporta solo il formato Glue Schema Registry Avro con inferenza dello schema impostata su false.

Note e restrizioni per le origini di streaming Avro

Le seguenti note e restrizioni si applicano alle origini di streaming nel formato Avro:

  • Quando il rilevamento dello schema è attivato, lo schema Avro deve essere incluso nel payload. Quando disattivato, il payload deve contenere solo dati.

  • Alcuni tipi di dati Avro non sono supportati nei frame dinamici. Non è possibile specificare questi tipi di dati quando si definisce lo schema con la pagina Define a schema (Definire uno schema) nella procedura guidata per la creazione della tabella nella console AWS Glue. Durante il rilevamento dello schema, i tipi non supportati nello schema Avro vengono convertiti in tipi supportati come segue:

    • EnumType => StringType

    • FixedType => BinaryType

    • UnionType => StructType

  • Se si definisce lo schema della tabella utilizzando la pagina Define a schema (Definire uno schema) nella console, il tipo di elemento root implicito per lo schema è record. Se si desidera un tipo di elemento root diverso da record, ad esempio array o map, non è possibile specificare lo schema utilizzando la pagina Define a schema (Definire uno schema). È invece necessario saltare quella pagina e specificare lo schema come proprietà di tabella o all'interno dello script ETL.

    • Per specificare lo schema nelle proprietà della tabella, completa la procedura guidata per la creazione della tabella, modifica i dettagli della tabella e aggiungi una nuova coppia chiave-valore in Table properties (Proprietà della tabella). Utilizza la chiave avroSchema, e inserisci un oggetto JSON dello schema per il valore, come mostrato nello screenshot seguente.

      Sotto l'intestazione Table properties (Proprietà tabella), sono presenti due colonne di campi di testo. L'intestazione della colonna a sinistra è Key (Chiave) e l'intestazione della colonna di destra è Value (Valore). La coppia chiave/valore nella prima riga è classificazione/avro. La coppia chiave/valore nella seconda riga è avroSchema/{"type":"array","items":"string"}.
    • Per specificare lo schema nello script ETL, modifica l'istruzione di assegnazione datasource0 e aggiungi la chiave avroSchema all'argomento additional_options, come mostrato nei seguenti esempi Python e Scala.

      Python
      SCHEMA_STRING = ‘{"type":"array","items":"string"}’ datasource0 = glueContext.create_data_frame.from_catalog(database = "database", table_name = "table_name", transformation_ctx = "datasource0", additional_options = {"startingPosition": "TRIM_HORIZON", "inferSchema": "false", "avroSchema": SCHEMA_STRING})
      Scala
      val SCHEMA_STRING = """{"type":"array","items":"string"}""" val datasource0 = glueContext.getCatalogSource(database = "database", tableName = "table_name", redshiftTmpDir = "", transformationContext = "datasource0", additionalOptions = JsonOptions(s"""{"startingPosition": "TRIM_HORIZON", "inferSchema": "false", "avroSchema":"$SCHEMA_STRING"}""")).getDataFrame()

Applicazione di pattern Grok alle origini di streaming

È possibile creare un processo di streaming ETL per un'origine dati dei log e utilizzare i pattern Grok per convertire i registri in dati strutturati. Il processo ETL elabora quindi i dati come origine dati strutturata. È possibile specificare i pattern Grok da applicare quando si crea la tabella Catalogo dati per l'origine di streaming.

Per informazioni sui pattern Grok e sui valori delle stringhe di pattern personalizzati, consulta Scrittura di classificatori personalizzati grok.

Aggiungere pattern Grok alla tabella Catalogo dati (console)
  • Utilizza la procedura guidata per la creazione della tabella e crea la tabella con i parametri specificati in Creazione di un catalogo dati per un'origine di streaming. Specifica il formato dei dati come Grok, compila il pattern Grok e, facoltativamente, aggiungi pattern personalizzati in Custom patterns (optional) (Modelli personalizzati [facoltativo]).

    *

    Premi Invio dopo ogni pattern personalizzato.

Aggiungere pattern Grok alla tabella Catalogo dati (API AWS Glue o AWS CLI)
  • Aggiungi il parametro GrokPattern e, facoltativamente, il parametro CustomPatterns al processo API CreateTable o al comando CLI create_table.

    "Parameters": { ... "grokPattern": "string", "grokCustomPatterns": "string", ... },

    Esprimi grokCustomPatterns come stringa e usa "\n" come separatore tra i pattern.

    Di seguito è riportato un esempio di specifica di questi parametri.

    "parameters": { ... "grokPattern": "%{USERNAME:username} %{DIGIT:digit:int}", "grokCustomPatterns": "digit \d", ... }

Definizione delle proprietà di processo per un processo di streaming ETL

Quando definisci un processo di streaming ETL nella console AWS Glue, fornisci le seguenti proprietà specifiche dei flussi. Per le descrizioni di proprietà aggiuntive, consulta Definire le proprietà di processo per i processi Spark.

Ruolo IAM

Specificate il ruolo AWS Identity and Access Management (IAM) utilizzato per l'autorizzazione alle risorse utilizzate per eseguire il job, accedere alle sorgenti di streaming e accedere agli archivi dati di destinazione.

Per accedere ad Amazon Kinesis Data Streams, AmazonKinesisFullAccess AWS collega la policy gestita al ruolo o allega una policy IAM simile che consenta un accesso più dettagliato. Per i criteri di esempio, consulta Controllo dell'accesso alle risorse Amazon Kinesis Data Streams tramite IAM.

Per ulteriori informazioni sulle autorizzazioni per l'esecuzione di processi in AWS Glue, consulta Gestione delle identità e degli accessi per AWS Glue.

Type

Scegli Spark streaming.

Versione AWS Glue

La versione di AWS Glue determina le versioni di Apache Spark e Python che sono disponibili per il processo. Scegli una selezione che specifica la versione di Python o Scala disponibile per il processo. AWS Glue La versione 2.0 con supporto Python 3 è la versione predefinita per lo streaming delle operazioni ETL.

Maintenance window (Finestra di manutenzione)

Speciifica una finestra in cui è possibile riavviare un processo di streaming. Per informazioni, consulta Finestre di manutenzione per AWS Glue lo streaming.

Timeout dei processi

È possibile inserire una durata in minuti. Il valore predefinito è vuoto.

  • I lavori di streaming devono avere un valore di timeout inferiore a 7 giorni o 10080 minuti.

  • Se il valore viene lasciato vuoto, il processo verrà riavviato dopo 7 giorni, se non è stata impostata una finestra di manutenzione. Se è stata impostata una finestra di manutenzione, il lavoro verrà riavviato durante la finestra di manutenzione dopo 7 giorni.

Origine dati

Rimuovi la tabella creata in Creazione di un catalogo dati per un'origine di streaming.

Destinazione dati

Esegui una di queste operazioni:

  • Scegliere Crea tabelle nell'oggetto dati e specificare le seguenti proprietà dell'oggetto dati.

    Datastore

    Seleziona Amazon S3 o JDBC.

    Formato

    Scegli un formato qualsiasi. Tutti sono supportati per lo streaming.

  • Scegli Use tables in the data catalog and update your data target (Usa tabelle nel catalogo dati e aggiorna la destinazione dati) e scegli una tabella per un data store JDBC.

Definizione dello schema di output

Esegui una di queste operazioni:

  • Scegli Automatically detect schema of each record (Rileva automaticamente lo schema di ciascun record) per attivare il rilevamento dello schema. AWS Gluedetermina lo schema dai dati di streaming.

  • Scegli Specify output schema for all records (Specificare lo schema di output per tutti i record) per utilizzare la trasformazione Apply Mapping (Applica mapping) per definire lo schema di output.

Script

È possibile fornire uno script personalizzato o modificare lo script generato per eseguire le operazioni supportate dal motore di Apache Spark Structured Streaming. Per informazioni sulle operazioni disponibili, consulta Operazioni sullo streaming DataFrames /Datasets.

Streaming di note e restrizioni ETL

Tieni presente le seguenti note e restrizioni:

  • La decompressione automatica per i processi ETL in streaming di AWS Glue è disponibile solo per i tipi di compressione supportati. Tieni presente quanto segue:

    • Snappy framed si riferisce al formato di framing ufficiale di Snappy.

    • Deflate è supportato in Glue versione 3.0, non Glue versione 2.0.

  • Quando si utilizza il rilevamento dello schema, non è possibile eseguire join dei dati di streaming.

  • I processi ETL di streaming di AWS Glue non supportano il tipo di dati Union per il registro degli schemi AWS Glue con il formato Avro.

  • Lo script ETL può utilizzare le trasformazioni integrate di AWS Glue e le trasformazioni native di Apache Spark Structured Streaming. Per ulteriori informazioni, consulta Operazioni sullo streaming DataFrames /Datasets sul sito Web di Apache Spark oppure. AWS Glue PySpark trasforma il riferimento

  • Le operazioni ETL di streaming AWS Glue utilizzano i checkpoint per tenere traccia dei dati letti. Pertanto, un processo arrestato e riavviato riprende da dove era stato interrotto nello stream. Se si desidera rielaborare i dati, è possibile eliminare la cartella di checkpoint a cui si fa riferimento nello script.

  • I segnalibri delle operazioni non sono supportati.

  • Per utilizzare la funzionalità di fan-out avanzato di Flusso di dati Kinesis, consulta la pagina Utilizzo del fan-out avanzato nei processi di flussi di dati Kinesis.

  • Se si utilizza una tabella di catalogo dati creata da AWS Glue Schema Registry, quando diventa disponibile una nuova versione dello schema, per rifletterlo, è necessario effettuare le seguenti operazioni:

    1. Arrestare i processi associati alla tabella.

    2. Aggiornare lo schema per la tabella catalogo dati.

    3. Riavviare i processi associati alla tabella.