ETLOfferte di lavoro in streaming 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à.

ETLOfferte di lavoro in streaming in AWS Glue

Puoi creare processi di estrazione, trasformazione e caricamento (ETL) in streaming che vengono eseguiti continuamente e utilizzano dati da fonti di streaming come Amazon Kinesis Data Streams, Apache Kafka Amazon Managed Streaming for Apache Kafka e (Amazon). MSK I job puliscono e trasformano i dati, quindi caricano i risultati in data lake JDBC o data store Amazon S3.

Inoltre, è possibile produrre dati per i flussi di dati Amazon Kinesis. Questa funzionalità è disponibile solo durante la scrittura AWS Glue di 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. Puoi modificare questa dimensione della finestra per aumentare la tempestività o la precisione dell'aggregazione. AWS Glue i lavori di streaming utilizzano i checkpoint anziché i segnalibri di lavoro per tenere traccia dei dati che sono stati letti.

Nota

AWS Glue fattura ogni ora per i ETL lavori di streaming mentre sono in esecuzione.

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

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

  1. Per una sorgente di streaming Apache Kafka, crea un AWS Glue connessione alla fonte Kafka o al cluster AmazonMSK.

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

  3. Crea un ETL lavoro per la fonte di 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 ETL processo di streaming per Amazon Kinesis Data Streams, non è necessario creare un AWS Glue connessione. Tuttavia, se è presente una connessione collegata al AWS Glue è necessario un ETL processo di streaming che ha Kinesis Data Streams come origine, quindi un endpoint VPC cloud privato virtuale () per Kinesis. Per ulteriori informazioni, consulta Creazione di un endpoint di interfaccia nella Amazon VPC User Guide. 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.

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

AWS Glue supporta la decompressione automatica per i seguenti tipi di compressione, in base al 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

Creare un AWS Glue connessione per un flusso di dati Apache Kafka

Per leggere da uno stream di Apache Kafka, è necessario creare un AWS Glue connessione.

Per creare un AWS Glue connessione per un sorgente Kafka (Console)
  1. Apri la AWS Glue console all'indirizzo. https://console.aws.amazon.com/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 i server bootstrap Kafka URLs, inserisci l'host e il numero di porta per i broker bootstrap per il tuo cluster MSK Amazon o il cluster Apache Kafka. Utilizza solo gli 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 esempi di coppie di nomi host e numeri di porta per un MSK cluster Amazon.

    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 informazioni sul broker bootstrap, consulta Getting the Bootstrap Brokers for an Amazon MSK Cluster nella Amazon Managed Streaming for Apache Kafka Developer Guide.

  6. Se desideri una connessione sicura all'origine dati Kafka, seleziona Richiedi SSL connessione e, per la posizione del certificato CA privato Kafka, inserisci un percorso Amazon S3 valido verso un certificato personalizzato. SSL

    Per una SSL connessione a Kafka autogestito, il certificato personalizzato è obbligatorio. È facoltativo per AmazonMSK.

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

  7. Usa AWS Glue Studio o AWS CLI per specificare un metodo di autenticazione del client Kafka. Per accedere, AWS Glue Studio seleziona AWS Gluedal ETLmenu 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 del client .

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

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

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

Per ulteriori informazioni sull' AWS Glue connessioni, vedi. Connessione ai dati

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

SASLAutenticazione/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, vedere la documentazione MITKerberos: Keytab.

File Kerberos krb5.conf

Scegliere il file krb5.conf. Contiene il realm predefinito (una rete logica, simile a un dominio, che definisce un gruppo di sistemi sotto lo stesso dominioKDC) e la posizione del server. KDC Per ulteriori informazioni, vedere la documentazione 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, vedere MIT Documentazione Kerberos: Kerberos principal.

SASLAutenticazione/- -512 SCRAM SHA

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

AWS Secrets Manager

Cerca il tuo token nella casella di ricerca digitando il nome o. ARN

Nome utente e password del provider direttamente

Cerca il tuo token nella casella di ricerca digitando il nome o. ARN

SSLautenticazione del client

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.

IAMautenticazione

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

SASL/autenticazione 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 fonte di dati per il ETL processo di streaming.

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

Utilizzo dell'AWS Glue console, the AWS Command Line Interface (AWS CLI) o AWS Glue APIper creare la tabella. Per informazioni sulla creazione manuale di una tabella con AWS Glue console, vedereCreazione di tabelle.

Nota

Non è possibile utilizzare la AWS Lake Formation console per creare la tabella; è necessario utilizzare il 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, imposta le seguenti ETL proprietà di streaming (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 Region e il nome dello stream Kinesis vengono tradotti insieme in uno Stream. 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:
Stream ARN

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

Ruolo presunto ARN

L'Amazon Resource Name (ARN) del 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 ARN di ruolo viene utilizzato anche nel ruolo principale assunto. Ciò significa che le successive API richieste tra account che utilizzano le credenziali di sicurezza temporanee esporranno il nome della sessione di ruolo all'account esterno nei relativi registri. AWS CloudTrail

Per impostare ETL le proprietà di streaming per Amazon Kinesis Data Streams (AWS Glue APIo) AWS CLI
  • Per configurare ETL le proprietà di streaming per una sorgente Kinesis nello stesso account, specifica i endpointUrl parametri streamName e nella StorageDescriptor struttura dell'CreateTableAPIoperazione o del create_table CLI comando.

    "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 configurare ETL le proprietà di streaming per una sorgente Kinesis in un altro account, specifica i streamARN parametri awsSTSRoleARN e awsSTSSessionName (facoltativi) nella StorageDescriptor struttura dell'CreateTableAPIoperazione o del create_table CLI comando.

    "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, imposta le seguenti ETL proprietà di streaming (console).

Tipo di origine

Kafka

Per una fonte Kafka:
Nome argomento

Nome argomento specificato in Kafka.

Connessione

Un record AWS Glue connessione che fa riferimento a una fonte Kafka, come descritto in. Creare un AWS Glue connessione per un flusso di dati Apache Kafka

AWS Glue Fonte della tabella Schema Registry

Per utilizzare AWS Glue Registro degli schemi per i lavori di streaming, segui le istruzioni riportate Caso d'uso: AWS Glue Data Catalog per creare o aggiornare una tabella del registro degli schemi.

Attualmente AWS Glue Lo streaming 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 Definisci uno schema nella procedura guidata per la creazione della tabella in AWS Glue console. 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à della tabella o all'interno dello ETL script.

    • 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). Utilizzate la chiave avroSchema e immettete un JSON oggetto dello schema per il valore, come mostrato nella schermata 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 key/value pair in the first row is classification/avro. The key/value coppia nella seconda riga èavroSchema/{"type» :"array», "items» :"string "}.
    • Per specificare lo schema nello ETL script, modificate l'istruzione di datasource0 assegnazione e aggiungete la avroSchema chiave all'additional_optionsargomento, come mostrato nei seguenti esempi di 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 ETL processo di streaming per una fonte di dati di registro e utilizzare i modelli Grok per convertire i log in dati strutturati. Il ETL job elabora quindi i dati come fonte di 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.

Per aggiungere modelli grok alla tabella Data Catalog (AWS Glue APIo AWS CLI)
  • Aggiungere il GrokPattern parametro e facoltativamente il CustomPatterns parametro all'CreateTableAPIoperazione o al create_table CLI comando.

    "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à del lavoro per un lavoro in streaming ETL

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

IAMRuolo

Specificate il ruolo AWS Identity and Access Management (IAM) utilizzato per l'autorizzazione alle risorse utilizzate per eseguire il processo, 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 simile che consenta IAM un accesso più dettagliato. Per esempi di policy, consulta Controlling Access to Amazon Kinesis Data IAM Streams Resources Using.

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

Tipo

Scegli Spark streaming.

AWS Glue version

Il AWS Glue version determina le versioni di Apache Spark e Python o Scala disponibili per il lavoro. Scegliete una selezione che specifichi la versione di Python o Scala disponibile per il lavoro. AWS Glue La versione 2.0 con supporto per Python 3 è l'impostazione predefinita per i lavori di streamingETL.

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

    Scegli Amazon S3 o. JDBC

    Formato

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

  • Scegli Usa le tabelle nel catalogo dati e aggiorna la destinazione dei dati, quindi scegli una tabella per un JDBC data store.

Definizione dello schema di output

Esegui una di queste operazioni:

  • Scegli Rileva automaticamente lo schema di ogni record per attivare il rilevamento dello schema. AWS Glue determina 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, vedere Operazioni sullo streaming DataFrames /Datasets.

ETLNote e restrizioni relative allo streaming

Tieni presente le seguenti note e restrizioni:

  • Decompressione automatica per AWS Glue i ETL lavori di streaming sono disponibili 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.

  • AWS Glue i ETL lavori di streaming non supportano il tipo di dati Union per AWS Glue Registro degli schemi con formato Avro.

  • Il tuo ETL script può usare AWS Gluee le trasformazioni native di Apache Spark Structured Streaming. Per ulteriori informazioni, consulta Operazioni sullo streaming DataFrames /Datasets sul sito Web di Apache Spark o. AWS Glue PySpark trasforma il riferimento

  • AWS Glue i ETL lavori di streaming utilizzano i checkpoint per tenere traccia dei dati che sono stati 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 utilizzi una tabella Data Catalog creata da AWS Glue Schema Registry, quando diventa disponibile una nuova versione dello schema, per riflettere il nuovo schema, devi fare quanto segue:

    1. Arrestare i processi associati alla tabella.

    2. Aggiornare lo schema per la tabella catalogo dati.

    3. Riavviare i processi associati alla tabella.