View a markdown version of this page

AWS Glue Streaming - AWS Aderenza

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à.

AWS Glue Streaming

AWS Glue Lo streaming, un componente di AWS Glue, consente di gestire in modo efficiente i dati in streaming quasi in tempo reale, consentendoti di svolgere attività cruciali come l'acquisizione, l'elaborazione e l'apprendimento automatico dei dati. Utilizzando il framework Apache Spark Streaming, Streaming fornisce un servizio serverless in grado di gestire AWS Glue lo streaming di dati su larga scala. AWS Glue offre diverse ottimizzazioni in aggiunta ad Apache Spark, come l'infrastruttura serverless, il ridimensionamento automatico, lo sviluppo di processi visivi, notebook istantanei per lo streaming e altri miglioramenti delle prestazioni.

Casi d'uso per lo streaming

Alcuni casi d'uso comuni dello streaming includono: AWS Glue

Near-real-time elaborazione dati: AWS Glue lo streaming consente alle organizzazioni di elaborare i dati in streaming quasi in tempo reale, consentendo loro di ricavare informazioni e prendere decisioni tempestive sulla base delle informazioni più recenti.

Rilevamento delle frodi: puoi utilizzare AWS Glue lo streaming per l'analisi in tempo reale dei dati in streaming, rendendolo utile per rilevare attività fraudolente, come frodi con carta di credito, intrusioni nella rete o truffe online. Elaborando e analizzando continuamente i dati in entrata, è possibile identificare rapidamente anomalie o sequenze sospette.

Analisi dei social media: AWS Glue lo streaming può elaborare dati sui social media in tempo reale, come tweet, post o commenti, consentendo alle organizzazioni di monitorare le tendenze, analizzare il sentiment e gestire la reputazione del marchio in tempo reale.

Analisi dell'Internet of Things (IoT): AWS Glue lo streaming è adatto per la gestione e l'analisi di flussi di dati ad alta velocità generati da dispositivi IoT, sensori e macchinari connessi. Consente il monitoraggio in tempo reale, il rilevamento delle anomalie, la manutenzione predittiva e altri casi d'uso di analisi IoT.

Analisi clickstream: lo AWS Glue streaming può elaborare e analizzare i dati clickstream in tempo reale provenienti da siti Web o applicazioni mobili. In tal modo, le aziende possono ottenere approfondimenti sul comportamento degli utenti, personalizzare le loro esperienze e ottimizzare le campagne di marketing sulla base di dati di clickstream in tempo reale.

Monitoraggio e analisi dei log: AWS Glue lo streaming può elaborare e analizzare continuamente i dati di registro provenienti da server, applicazioni o dispositivi di rete in tempo reale. Ciò contribuisce a rilevare le anomalie, risolvere i problemi e monitorare lo stato e le prestazioni del sistema.

Sistemi di raccomandazione: AWS Glue lo streaming può elaborare i dati sulle attività degli utenti in tempo reale e aggiornare i modelli di raccomandazione in modo dinamico. Ciò consente di fornire consigli personalizzati e in tempo reale in base al comportamento e alle preferenze degli utenti.

Questi sono alcuni esempi della vasta gamma di casi d'uso in cui è possibile applicare AWS Glue lo streaming. La sua integrazione con l' AWS ecosistema e i servizi gestiti lo rendono una scelta conveniente per l'elaborazione e l'analisi dei flussi in tempo reale nel cloud.

Quali sono i vantaggi dell'utilizzo AWS Glue Streaming?

I vantaggi dell'utilizzo AWS Glue dello streaming sono i seguenti:

  • Senza server: AWS Glue lo streaming è senza server, eliminando la necessità di gestire l'infrastruttura. Ciò riduce il sovraccarico operativo e consente agli utenti di concentrarsi sulle attività di elaborazione e analisi dei dati anziché sulla gestione dell'infrastruttura.

  • Scalabilità automatica: AWS Glue lo streaming offre funzionalità di scalabilità automatica, regolando dinamicamente la capacità di elaborazione in base al carico di lavoro. È scalabile automaticamente in orizzontale o in verticale per gestire le fluttuazioni del volume di dati, garantendo livelli ottimali di prestazioni e utilizzo delle risorse.

  • Sviluppo visivo: lo sviluppo di job in streaming può essere complesso. AWS Glue Lo streaming affronta questa sfida offrendo AWS Glue Studio, uno strumento di creazione visiva. AWS Glue Studio semplifica il processo di creazione di flussi di lavoro in streaming e consente agli sviluppatori di progettare e gestire visivamente le applicazioni di streaming, riducendo la curva di apprendimento e aumentando la produttività.

  • Cost-effective: Essendo un servizio serverless, AWS Glue lo streaming offre efficienza in termini di costi eliminando la necessità di provisioning e manutenzione dell'infrastruttura. Agli utenti vengono fatturate le risorse utilizzate durante l'esecuzione dei processi di streaming, contribuendo all'ottimizzazione dei costi e a un dimensionamento in base all'utilizzo effettivo.

  • Gestisce carichi di lavoro complessi: AWS Glue lo streaming è progettato per gestire carichi di lavoro di streaming complessi. È in grado di elaborare e analizzare grandi volumi di dati in tempo reale, supportare trasformazioni avanzate e integrarsi con altri AWS servizi, consentendo sofisticate pipeline di dati in streaming e flussi di lavoro di analisi.

  • Nessun vincolo: AWS Glue lo streaming offre flessibilità ed evita il vincolo del fornitore. Gli utenti possono sfruttare AWS Glue lo streaming come parte di un AWS ecosistema più ampio, integrandolo perfettamente con altri servizi. AWS Ciò consente una facile integrazione con le origini dati, le applicazioni e i servizi esistenti senza vincolare a una tecnologia o piattaforma specifica.

Quando utilizzarlo AWS Glue Streaming?

I casi d'uso dello streaming includono numerose opzioni. Consigliamo AWS Glue lo streaming nei seguenti scenari.

  1. Se stai già utilizzando AWS Glue Spark per l'elaborazione in batch, AWS Glue Streaming è la scelta ideale per te. Fornisce una transizione ottimale alla creazione di processi di streaming senza la necessità di imparare un nuovo linguaggio o framework. Sfruttando le conoscenze e l'infrastruttura esistenti, AWS Glue Streaming semplifica il processo di sviluppo del lavoro e consente di estendere facilmente le capacità di elaborazione dei dati a scenari di streaming in tempo reale.

  2. Se hai bisogno di un servizio o prodotto unificato per gestire carichi di lavoro in batch, streaming e basati su eventi, Streaming è la soluzione che fa per te. AWS Glue Con AWS Glue Streaming, puoi consolidare le tue esigenze di elaborazione dei dati in un unico framework, eliminando la complessità della gestione di più sistemi. Ciò consente di sviluppare e mantenere flussi di lavoro di dati diversi in modo efficiente, garantendo al contempo la coerenza e la compatibilità tra diversi tipi di carichi di lavoro.

  3. AWS Glue Lo streaming è ideale per scenari che coinvolgono volumi di dati in streaming estremamente grandi e trasformazioni complesse, come i join tra stream o i database relazionali. È in grado di elaborare e analizzare in modo efficiente enormi flussi di dati, consentendoti di affrontare con facilità carichi di lavoro impegnativi. Che si tratti di acquisizione di dati ad alta velocità o di complesse manipolazioni di dati, la scalabilità e le funzionalità di elaborazione avanzate di AWS Glue Streaming garantiscono prestazioni ottimali e risultati accurati.

  4. Se preferisci un approccio visivo alla creazione di lavori di streaming, AWS Glue offre AWS Glue Studio, con il quale puoi progettare e gestire visivamente le tue applicazioni di streaming, semplificando il processo di sviluppo. Questa interfaccia intuitiva consente agli sviluppatori di creare, configurare e monitorare i flussi di lavoro di streaming utilizzando un'interfaccia visiva, riducendo la curva di apprendimento e aumentando la produttività.

  5. AWS Glue Lo streaming è una scelta eccellente per i casi d'uso quasi in tempo reale in cui sono previsti SLA (Service Level Agreement) rigorosi superiori a 10 secondi.

  6. Se stai creando un data lake transazionale utilizzando Apache Iceberg, Apache Hudi o Delta Lake, Streaming fornisce il supporto nativo per questi formati di tabelle aperte. AWS Glue Questa perfetta integrazione consente di elaborare i dati in streaming direttamente da questi data lake transazionali, garantendo la coerenza, l'integrità e la compatibilità dei dati.

  7. Quando è necessario importare dati in streaming per una varietà di destinazioni di dati: AWS Glue lo streaming fornisce obiettivi nativi per una varietà di destinazioni di dati come Amazon Redshift, Amazon RDS, Amazon Aurora, Oracle, SQL Server e altre destinazioni.

Origini dati supportate

AWS Glue Lo streaming supporta le seguenti fonti di dati:

  • Amazon Kinesis

  • Amazon MSK (Streaming gestito per Apache Kafka)

  • Self-managed Apache Kafka

Destinazioni di dati supportate

AWS Glue Lo streaming supporta una varietà di obiettivi di dati come:

  • Obiettivi di dati supportati da AWS Glue Data Catalog

  • Simple Storage Service (Amazon S3)

  • Amazon Redshift

  • MySQL

  • PostgreSQL

  • Oracle

  • Microsoft SQL Server

  • Snowflake

  • Qualsiasi database che possa essere collegato tramite JDBC

  • Apache Iceberg, Delta e Apache Hudi

  • AWS Glue Connettori Marketplace

Attivazione della modalità in tempo reale per i lavori in streaming

Real-time mode (RTM) è un nuovo modello di esecuzione per Spark Structured Streaming disponibile nella versione 6.0. AWS Glue RTM riduce la latenza end-to-end da secondi o minuti a meno di secondi. Real-time la modalità si applica solo ai job di Spark Structured Streaming. Non si applica ai precedenti Spark Streaming (DStreams) o ad altri tipi di job.

RTM utilizza. Trigger.RealTime Le attività vengono eseguite continuamente all'interno di una finestra batch (impostazione predefinita 5 minuti) ed elaborano i record man mano che arrivano, anziché accumulare dati a intervalli. Questo è diverso dal modello microbatch predefinito, in cuiforEachBatch/esegue Trigger.ProcessingTime polling, elabora, esegue il commit e riavvia le attività a ogni intervallo.

Importante

RTM richiede un consenso esplicito tramite un argomento job. Se non ci sono abbastanza slot di attività per coprire tutte le partizioni di origine, RTM elimina silenziosamente le partizioni non assegnate. È necessario fornire un numero sufficiente di lavoratori per coprire tutte le partizioni Kafka.

Prerequisiti

Prima di attivare la modalità in tempo reale, verificate che il lavoro soddisfi i seguenti requisiti:

  • AWS Glue versione 6.0

  • Il lavoro deve utilizzare Spark Structured Streaming. Real-time la modalità non si applica a Spark Streaming (DStreams) legacy o ad altri tipi di job.

  • Il tipo di processo deve essere Spark Streaming (comando) gluestreaming

  • La lingua del lavoro deve essere Scala (--job-language scala). PySpark Il supporto RTM non è disponibile fino a Spark 4.2.

  • Solo fonte Kafka. Amazon Kinesis non è supportato per RTM nella versione 6.0. AWS Glue

  • Solo operazioni stateless (selezione, filtro, progetto, mappa). Le operazioni con stato come aggregazioni, join, deduplicazione e operazioni con finestra non sono supportate.

  • La modalità di output deve essere Update. La modalità di aggiunta non è supportata con RTM.

  • Auto-scaling non è compatibile con la modalità in tempo reale. Non abilitate il ridimensionamento automatico per i lavori RTM. Configura un numero fisso di lavoratori sufficiente a coprire tutte le partizioni Kafka nell'argomento di origine.

Quando usare la modalità in tempo reale

Real-time la modalità è progettata per una classe specifica di carichi di lavoro di streaming. Prendi in considerazione l'utilizzo della modalità in tempo reale quando:

  • È necessaria una latenza end-to-end inferiore al secondo e la latenza dei microbatch (1—2 secondi o più) è troppo elevata per il tuo caso d'uso.

  • La pipeline esegue trasformazioni senza stato, ad esempio filtrare, proiettare, arricchire o indirizzare i record da Kafka a Kafka o a un altro sink.

  • Disponi di un numero fisso e prevedibile di partizioni Kafka e puoi fornire i lavoratori di conseguenza.

  • I tuoi lavori sono scritti in Scala.

Continua a utilizzare la modalità micro-batch quando:

  • Sono necessarie operazioni basate sullo stato, come aggregazioni, join, deduplicazione o calcoli con finestra.

  • Usi Amazon Kinesis come fonte.

  • Tu scrivi PySpark lavori.

  • Ti affidi al ridimensionamento automatico per gestire volumi di dati variabili.

  • Utilizzi l'API forEachBatch or GlueContext streaming.

  • Second-level la latenza è accettabile per il tuo caso d'uso.

Come funziona la modalità in tempo reale

Quanto segue descrive la differenza tra il modello microbatch e la modalità in tempo reale:

Micro-batch modalità

Ogni intervallo avvia le attività, legge i dati accumulati, elabora i dati, esegue il commit del checkpoint, termina le attività e si ripete. La latenza minima è di circa 1—2 secondi.

Real-time modalità

Le attività vengono avviate una volta e vengono eseguite per la durata di batchDurationMs (impostazione predefinita 5 minuti). Le attività elaborano i record non appena arrivano, con una latenza inferiore al secondo. Alla scadenza, le attività si interrompono in modo cooperativo. L'autista esegue il checkpoint e il batch successivo riavvia le attività.

Entrambe le modalità utilizzano lo stesso formato di checkpoint e lo stesso meccanismo di ripristino. La differenza fondamentale è la durata dell'attività. Micro-batch la modalità termina e riavvia le attività a ogni intervallo. Real-time la modalità mantiene le attività in esecuzione continua all'interno di una finestra batch più lunga.

Importante

Se non ci sono abbastanza slot di attività per elaborare tutte le partizioni di origine, RTM elimina silenziosamente le partizioni non assegnate. Assicuratevi di disporre di un numero sufficiente di lavoratori per coprire tutte le partizioni.

Per abilitare la modalità in tempo reale

È possibile abilitare la modalità in tempo reale impostando l'argomento --enable-real-time-mode job sutrue. Puoi impostare questo argomento nella AWS Glue console o tramite l'API.

Per abilitare la modalità in tempo reale (console)

  1. Apri la AWS Glue console e apri il processo di streaming.

  2. Seleziona la scheda Job details (Dettagli del processo).

  3. Per la versione Glue, scegli Glue 6.0. Per Tipo, scegli Spark Streaming.

  4. Scorri fino alla sezione Parametri del lavoro.

  5. Scegliete Aggiungi nuovo parametro.

  6. In Chiave, inserire --enable-real-time-mode. In Valore, specifica true.

  7. Scegli Save (Salva).

Nota

I trattini iniziali sono obbligatori. Job parameters è la visualizzazione della console di. DefaultArguments

Per abilitare la modalità in tempo reale (API)

Il --enable-real-time-mode flag è memorizzato nella DefaultArguments mappa della definizione del lavoro. È possibile impostarlo quando si crea o si aggiorna un lavoro.

Per creare un nuovo lavoro (AWS CLI)

Esegui il comando seguente:

aws glue create-job \ --name my-rtm-job \ --role arn:aws:iam::123456789012:role/MyGlueRole \ --glue-version 6.0 \ --worker-type G.1X --number-of-workers 4 \ --command '{"Name":"gluestreaming","ScriptLocation":"s3://my-bucket/scripts/rtm-job.scala"}' \ --default-arguments '{ "--enable-real-time-mode": "true", "--job-language": "scala", "--class": "GlueApp", "--TempDir": "s3://my-bucket/tmp/" }' \ --region us-east-2
Per creare un nuovo lavoro (boto3)

Eseguire il seguente codice:

import boto3 glue = boto3.client("glue", region_name="us-east-2") glue.create_job( Name="my-rtm-job", Role="arn:aws:iam::123456789012:role/MyGlueRole", GlueVersion="6.0", WorkerType="G.1X", NumberOfWorkers=4, Command={ "Name": "gluestreaming", "ScriptLocation": "s3://my-bucket/scripts/rtm-job.scala", }, DefaultArguments={ "--enable-real-time-mode": "true", "--job-language": "scala", "--class": "GlueApp", "--TempDir": "s3://my-bucket/tmp/", }, )
Per aggiornare un lavoro esistente (AWS CLI)

Esegui il comando seguente:

aws glue update-job \ --job-name my-existing-job \ --job-update '{ "GlueVersion": "6.0", "DefaultArguments": { "--enable-real-time-mode": "true", "--job-language": "scala" } }'

Scrivere il tuo script di streaming

L'argomento job dichiara l'intenzione di utilizzare la modalità in tempo reale. Lo script seleziona il trigger.

Il seguente esempio di Scala mostra una query di streaming che utilizzaTrigger.RealTime:

import org.apache.spark.sql.streaming.Trigger val query = df.writeStream .format("kafka") .outputMode("update") .trigger(Trigger.RealTime(60000L)) // checkpoint interval in milliseconds .start() query.awaitTermination()

Trigger.RealTimerichiede un intervallo di checkpoint in millisecondi. È richiesta la modalità di output dell'aggiornamento. Aggiungi OUTPUT_MODE_NOT_SUPPORTED lanci in modalità.

È possibile combinare le modalità in uno script purché sia impostato il flag:

dfA.writeStream.outputMode("update").trigger(Trigger.RealTime(60000L)).start() dfB.writeStream.outputMode("append").trigger(Trigger.ProcessingTime("30 seconds")).start()

Comportamento quando manca la bandiera

Quanto segue descrive come si comporta il lavoro quando il --enable-real-time-mode flag non è impostato:

  • Un processo che avvia una query in tempo reale senza il --enable-real-time-mode contrassegno ha esito negativo all'avvio della query. Il messaggio di errore indica di aggiungere l'argomento.

  • Micro-batch-only i lavori non sono mai influenzati dall'assenza di questo contrassegno.

  • Anche un job che imposta il flag ma utilizza solo interrogazioni in microbatch non viene modificato.

Considerazioni e limitazioni

Quando utilizzate la modalità in tempo reale, tenete presente quanto segue:

La partizione cade

Se non ci sono abbastanza slot di attività per coprire tutte le partizioni di origine, le partizioni non assegnate non vengono elaborate. Fornisci lavoratori per coprire tutte le partizioni di Kafka.

Nessun ridimensionamento automatico

Non abilitate il ridimensionamento automatico per i lavori in modalità tempo reale. Auto-scalingnon è compatibile con RTM e introduce una latenza che contrasta i vantaggi della bassa latenza. Fornisci un numero fisso di lavoratori pari o superiore al numero di partizioni Kafka nell'argomento di origine.

Solo Kafka

Il codice sorgente Amazon Kinesis non supporta RTM nella versione 6.0. AWS Glue

Solo Scala

PySpark non è supportato per RTM fino a Spark 4.2.

Solo apolide

Aggregazioni, join, deduplicazione, operazioni in finestra e non sono supportati. transformWithState

per EachBatch incompatibile

RTM non utilizza il modello. forEachBatch Usare Trigger.RealTime direttamente writeStream con.

Recupero da un checkpoint

Al riavvio del processo, RTM esegue il ripristino dall'ultimo checkpoint. I checkpoint si verificano ogni. batchDurationMs Worst-case la rielaborazione è la durata di una finestra batch (semantica almeno una volta).