Domande generali

D: Cos'è Amazon Kinesis Data Analytics?
Amazon Kinesis Data Analytics è il modo più semplice di analizzare flussi di dati, ottenere informazioni utili e rispondere alle esigenze aziendali e dei clienti in tempo reale. Amazon Kinesis Data Analytics riduce la complessità insita nella creazione, gestione e integrazione di applicazioni di streaming con altri servizi AWS. È possibile creare rapidamente query SQL e applicazioni Java sofisticate utilizzando modelli e operatori integrati per funzioni di elaborazione comuni, al fine di organizzare, trasformare, aggregare e analizzare dati su qualsiasi scala.
 
Amazon Kinesis Data Analytics si occupa di tutte le operazioni necessarie per eseguire le applicazioni in tempo reale in modo continuo, ricalibrando automaticamente le risorse in base al volume e alla velocità di throughput dei dati in entrata. Amazon Kinesis Data Analytics addebita esclusivamente i costi delle risorse utilizzate dalle applicazioni di streaming. Non sono previste tariffe minime né costi di configurazione.
 
D: Cosa si intende per elaborazione di flussi in tempo reale e a cosa serve?
I dati ci arrivano con una frequenza elevatissima perché le origini dati in tempo reale crescono a un ritmo esplosivo. I log di dati provenienti da applicazioni Web e mobili, i dati di acquisto da siti di e-commerce, i dati dei sensori di dispositivi IoT, sono tutte informazioni che aiutano le aziende a scoprire di più sui loro clienti, sulla loro organizzazione e sulla loro azienda. Disponendo della visibilità di questi dati nel momento in cui arrivano, puoi monitorare la tua attività in tempo reale e sfruttare rapidamente nuove opportunità di business. Ad esempio, facendo offerte promozionali ai clienti in base a dove potrebbero trovarsi in un determinato momento, oppure monitorando il trend sociale e la variabilità del comportamento dei clienti per identificare le nuove opportunità e agire di conseguenza.
 
Per sfruttare queste opportunità, dovrai poter contare su una serie di strumenti analitici che ti permettano di raccogliere e analizzare flussi di dati in tempo reale, strumenti diversi da quelli impiegati in genere per dati statici. Con le soluzioni di analisi tradizionali, prima raccogli le informazioni e le memorizzi in un database, poi impieghi tutto il tempo necessario per analizzarle, anche in un secondo momento. L'analisi dei dati in tempo reale richiede un approccio totalmente diverso e anche strumenti e servizi diversi. Invece di eseguire query di database sui dati memorizzati, i servizi di analisi dei flussi elaborano i dati in modo continuo prima che vengano memorizzati in un database. I dati di streaming vengono trasmessi a una velocità incredibile che varia in continuazione. I servizi di analisi dei flussi devono essere in grado di elaborare questi dati quando arrivano, spesso nella misura di milioni di eventi all'ora.
 
D: Cosa è possibile fare con Kinesis Data Analytics?
Puoi utilizzare Kinesis Data Analytics per molti casi d'uso per elaborare i dati in modo continuo e ottenere informazioni nel giro di pochi secondi o minuti, anziché attendere giorni o addirittura settimane. Kinesis Data Analytics consente di creare rapidamente applicazioni complete di elaborazione di flussi in tempo reale, che operano con analisi di log, analisi di clickstream, Internet of Things (IoT), tecnologie pubblicitarie, giochi e molto altro. I tre casi di utilizzo più comuni sono l'ETL (Extract-Transform-Load) del flusso di dati, la generazione di metriche continue e l'analisi reattiva.
 
Streaming ETL
Le applicazioni di streaming ETL consentono di ripulire, arricchire, organizzare e trasformare i dati grezzi prima di caricare il data lake o il data warehouse in tempo reale, riducendo o eliminando i passaggi ETL in batch. Queste applicazioni possono bufferizzare record di piccole dimensioni in file più grandi prima della consegna ed eseguire join sofisticati su flussi e tabelle. Ad esempio, puoi creare un'applicazione che legge continuamente i dati del sensore IoT memorizzati in Amazon Kinesis Data Streams, organizzare i dati in base al tipo di sensore, rimuovere i dati duplicati, normalizzare i dati in base a uno schema specificato e quindi consegnarli ad Amazon S3.
 
Generazione metrica continua
Le applicazioni di generazione metrica continua consentono di monitorare e scoprire i trend dei dati nel corso del tempo. Le tue applicazioni possono aggregare i flussi di dati in informazioni cruciali e integrarli perfettamente con i database di reporting e i servizi di monitoraggio per servire le tue applicazioni e i tuoi utenti in tempo reale. Con Kinesis Data Analytics, puoi usare codice SQL o Java per generare analisi di serie temporali in modo continuo su finestre temporali. Ad esempio, puoi creare una classifica generale in cui vengono mostrati i giocatori con i punteggi più alti di un videogioco, il tutto in tempo reale, inviando quindi i dati ad Amazon DynamoDB. Oppure puoi monitorare il traffico sul tuo sito Web calcolando il numero di visitatori unici ogni cinque minuti e inviando i risultati ad Amazon RedShift.
 
Analisi reattiva in tempo reale
Le applicazioni di analisi reattiva in tempo reale inviano notifiche o allarmi quando determinati parametri raggiungono le soglie predefinite, oppure, in casi più avanzati, quando l'applicazione rileva anomalie nell'utilizzo dell'algoritmo di machine learning. Queste applicazioni ti consentono di rispondere immediatamente ai cambiamenti della tua attività in tempo reale, come prevedere l'abbandono degli utenti nelle app mobili e identificare i sistemi deteriorati. Ad esempio, un'applicazione può elaborare la disponibilità o la percentuale di successi di un'API utilizzata dai clienti nel corso del tempo, inviando i risultati ad Amazon CloudWatch. Puoi anche creare un'altra applicazione per individuare gli eventi che soddisfano determinati criteri, informando poi automaticamente i clienti specifici con Amazon Kinesis Data Streams e Amazon Simple Notification Service (SNS).
 
D: Come inizio a usare le applicazioni Java per Kinesis Data Analytics?
Accedi alla console di Amazon Kinesis Data Analytics e crea una nuova applicazione di elaborazione di flussi. Puoi anche usare l' interfaccia a riga di comando e i kit SDK AWS. Una volta che hai creato un'applicazione, vai nel tuo ambiente di sviluppo integrato preferito, collegati ad AWS e installa le librerie Java open-source. Le librerie open-source sono basate su Apache Flink, un framework e motore open-source per l'elaborazione dei flussi di dati, e su SDK AWS. Le librerie estendibili includono più di 25 operatori di elaborazione del flusso preconfigurati come Window e Aggregate e e integrazioni di servizi AWS come AmaKinesis Data Streams e Amazon Kinesis Data Firehose. Una volta creato il codice, lo carichi nel servizio Amazon Kinesis Data Analytics che si occuperà di tutte le operazioni necessarie per eseguire le applicazioni in tempo reale in modo continuo, compreso il ridimensionamento automatico in base al volume e alla velocità di throughput dei dati in entrata.
 
D: Come inizio a usare le applicazioni SQL per Kinesis Data Analytics?
Accedi alla console di Amazon Kinesis Data Analytics e crea una nuova applicazione di elaborazione di flussi. Puoi anche usare l' interfaccia a riga di comando e i kit SDK AWS. Per creare un'applicazione end-to-end sono richieste tre fasi: 1) configurazione del flusso di dati in ingresso; 2) scrittura delle query SQL; 3) scelta della destinazione dei risultati. Kinesis Data Analytics riconosce i formati standard quali JSON, CSV e TSV e crea automaticamente uno schema di base. Puoi ottimizzare lo schema oppure, se desideri dati non strutturati, definirne uno nuovo utilizzando un intuitivo editor apposito. Il servizio applica quindi lo schema ai flussi in ingresso rendendoli simili a una tabella SQL aggiornata in modo continuo, su cui vengono quindi eseguite le query SQL. Per creare le query, è disponibile un editor SQL.
 
L'editor contiene tutte le funzioni più importanti, tra cui verifica della sintassi e testing su dati reali. AWS fornisce inoltre alcuni modelli predefiniti, con cui creare semplici filtri di flusso o sistemi più avanzati, ad esempio per il rilevamento di anomalie e l'analisi dei top-K dei flussi di dati. Il provisioning e il dimensionamento elastico delle risorse dell'infrastruttura sono a carico di Kinesis Data Analytics, che farà in modo di gestire qualsiasi throughput di dati. Non è necessario pianificare, acquisire o gestire un'infrastruttura.
 
D: Quali sono i limiti di Kinesis Data Analytics?
Kinesis Data Analytics ricalibra in modo elastico le risorse dell'applicazione per poter gestire throughput elevati e query complesse per la maggior parte degli scenari. Per informazioni dettagliate sulle restrizioni dei servizi, consulta la sezione Limiti nel documento Guida per lo sviluppatore di Amazon Kinesis Data Analytics per SQL. Per informazioni dettagliate sulle Restrizioni per le applicazioni Java, visita la sezione Limiti nel documento Guida per lo sviluppatore di Amazon Kinesis Data Analytics per SQL.

Concetti chiave

Cos'è un'applicazione Kinesis Data Analytics?
Un'applicazione è l'entità Kinesis Data Analytics sulla quale lavori. Le applicazioni Kinesis Data Analytics leggono ed elaborano i flussi di dati in modo continuo e in tempo reale. Potrai scrivere il codice dell'applicazione utilizzando SQL o Java per elaborare i flussi di dati in entrata e creare un determinato risultato. Kinesis Data Analytics carica quindi i risultati dell'elaborazione in una destinazione configurata.
 
Ogni applicazione è composta da 3 componenti principali:
 
Input: l'origine del flusso per l'applicazione. Nella relativa configurazione, devi mappare l'origine del flusso a uno o più flussi di dati in applicazione. I dati scorrono dalle tue origini dati nei tuoi flussi di dati in applicazione. Per elaborare i dati di questi flussi utilizzi il codice dell'applicazione e invii i dati elaborati ai flussi o alle destinazioni successive in applicazione. Aggiungi gli input all'interno del codice dell'applicazione per le applicazioni Java e tramite l'API per le applicazioni SQL.
 
Codice dell'applicazione: una serie di operatori Java o istruzioni SQL che elaborano l'input e producono l'output. Nella sua forma più semplice, il codice dell'applicazione può essere un singolo operatore Java o un'istruzione SQL che legge da un flusso di dati in applicazione associato a un'origine del flusso e scrive su un flusso di dati in applicazione associato a un output. Puoi scrivere codice Java o SQL che divide il flusso di dati iniziale in applicazione in più flussi e applica a questi flussi separati una logica aggiuntiva.
 
Output: puoi creare uno o più flussi in applicazione per conservare i risultati intermedi. Puoi anche configurare l'output di un'applicazione affinché inoltri i dati provenienti da flussi in applicazione specifici verso una destinazione esterna. Aggiungi questi output all'interno del codice dell'applicazione per le applicazioni Java o tramite API per le applicazioni SQL.
 
D: Cos'è un flusso di dati in applicazione?
Un flusso di dati in applicazione è un'entità che memorizza continuamente i dati nella tua applicazione affinché tu possa eseguire l'elaborazione. Le tue applicazioni scrivono e leggono continuamente dai flussi di dati in applicazione. Per le applicazioni Java, interagisci con il flusso in applicazione elaborando i dati tramite gli operatori di flusso. Gli operatori trasformano uno o più flussi di dati in un nuovo flusso di dati. Per le applicazioni SQL interagisci con un flusso in applicazione come faresti per una tabella SQL usando istruzioni SQL. Applichi istruzioni SQL a uno o più flussi di dati e inserisci i risultati in un nuovo flusso di dati.
 
D: Quale tipo di codice è supportato?
Per le applicazioni Java, Kinesis Data Analytics supporta applicazioni Java costruite tramite Apache Flink e SDK AWS. Per le applicazioni SQL, Kinesis Data Analytics supporta SQL ANSI con alcune estensioni allo standard SQL, per semplificare le operazioni sui flussi di dati.

Gestione delle applicazioni

D: Come è possibile monitorare il funzionamento e le prestazioni di un'applicazione Kinesis Data Analytics?
AWS fornisce diversi strumenti che permettono di monitorare le applicazioni Kinesis Data Analytics. Alcuni di questi strumenti possono essere configurati per monitorare le applicazioni in automatico. Per maggiori informazioni su come monitorare la tua applicazione, vedi:
 
D: Come è possibile controllare e gestire gli accessi a un'applicazione Kinesis Data Analytics?
Kinesis Data Analytics deve disporre delle autorizzazioni di lettura dei record provenienti dalle origini dati in flusso specificate nell'applicazione. Inoltre deve disporre delle autorizzazioni di scrittura dell'output dell'applicazione nelle destinazioni specificate nella relativa configurazione. Per concedere queste autorizzazioni, puoi creare ruoli IAM da assegnare a Kinesis Data Analytics. Le autorizzazioni concesse a un ruolo determineranno le operazioni che Kinesis Data Analytics potrà o non potrà effettuare una volta assunto il ruolo. Per maggiori informazioni, vedere:
 
D: Kinesis Data Analytics ricalibra le risorse dell'applicazione?
Kinesis Data Analytics ricalibra in modo elastico le risorse dell'applicazione per poter gestire throughput elevati di dati e query complesse. Il servizio effettua il provisioning di capacità sotto forma di unità di elaborazione di Amazon Kinesis o KPU (Kinesis Processing Unit). Una KPU fornisce 1 vCPU e 4 GB di memoria.
 
Per le applicazioni Java, Kinesis Data Analytics assegna 50 GB di storage dell'applicazione in esecuzione per KPU che l'applicazione utilizza per i checkpoint e che puoi utilizzare tramite il disco temporaneo. Un checkpoint è un backup aggiornato di un'applicazione in esecuzione che viene utilizzato per il ripristino subito dopo l'interruzione dell'applicazione. Puoi anche controllare l'esecuzione parallela per le attività di Kinesis Data Analytics per l'applicazione Java (come la lettura da un'origine o l'esecuzione di un operatore) utilizzando i parametri Parallelism e ParallelismPerKPU nell'API. Parallelism definisce il numero di istanze concomitanti di un'attività. Tutti gli operatori, le origini e i sink vengono eseguiti con un determinato parallelismo, per impostazione predefinita 1. ParallelismPerKPU definisce quante attività parallele possono essere pianificate per la Kinesis Processing Unit (KPU) della tua applicazione, per impostazione predefinita 1. Per ulteriori informazioni, consulta Ricalibrazione nella Guida per lo sviluppatore di Amazon Kinesis Data Analytics per Java.
 
Per le applicazioni SQL, ogni origine di flusso viene mappata a un flusso in applicazione corrispondente. Anche se si tratta di un'operazione non necessaria per molti clienti, puoi utilizzare le KPU in modo più efficiente aumentando il numero di flussi in applicazione a cui è mappata l'origine specificando il parametro di parallelismo di input. Kinesis Data Analytics divide le partizioni di cui è composta l'origine dati in flusso, ad esempio gli shard del flusso di dati di Amazon Kinesis, assegnandole equamente al numero specificato di flussi di dati in applicazione. Ad esempio, se come origine dati in flusso hai un flusso di dati Amazon Kinesis da 10 shard e specifichi un parametro di parallelismo pari a due, Kinesis Data Analytics assegna cinque shard a ciascuno dei due flussi in applicazione, denominati "SOURCE_SQL_STREAM_001" e "SOURCE_SQL_STREAM_002". Per ulteriori informazioni, consulta la sezione Configurazione del flusso in ingresso delle applicazioni nella Guida per lo sviluppatore di Amazon Kinesis Data Analytics per SQL.
 
D: Quali sono le best practice relative alla creazione e alla gestione di applicazioni Kinesis Data Analytics?
Per ulteriori informazioni sulle best practice per SQL, consulta la sezione Best practice della Guida per lo sviluppatore di Amazon Kinesis Data Analytics per SQL, che tratta di gestione delle applicazioni, definizione di uno schema di input, collegamento agli output e scrittura del codice dell'applicazione.

Prezzi e fatturazione

D: Quanto costa Kinesis Data Analytics?
I prezzi di Amazon Kinesis Data Analytics sono calcolati in base all'uso effettivo. Non è necessario effettuare il provisioning delle risorse e non sono previsti costi anticipati per Amazon Kinesis Data Analytics.
 
Viene addebitata una tariffa oraria calcolata sul numero medio di unità di elaborazione di Amazon Kinesis o KPU (Kinesis Processing Unit) utilizzate per eseguire l'applicazione di elaborazione dei flussi. Una KPU è un'unità di capacità di elaborazione dei flussi composta da 4 GB di memoria e 1 vCPU. Amazon Kinesis Data Analytics ricalibra automaticamente il numero di KPU richieste dall'applicazione di elaborazione dei flussi, in quanto le esigenze di memoria e calcolo variano in risposta alla complessità di elaborazione e al throughput dei dati dei flussi elaborati.
 
Per le applicazioni Java, ti viene addebitata una singola KPU in più per applicazione, utilizzata per l'orchestrazione delle applicazioni. Alle applicazioni Java viene addebitata anche l'esecuzione dello storage delle applicazioni e dei loro backup durevoli. Lo storage dell'applicazione in esecuzione è utilizzato per le funzionalità di elaborazione stateful di Amazon Kinesis Data Analytics e viene addebitato per GB-mese. I backup durevoli delle applicazioni sono opzionali e forniscono un punto di ripristino point-in-time per le applicazioni, con addebito per GB-mese.
 
Per ulteriori informazioni sui prezzi, consulta la  pagina dei prezzi di Amazon Kinesis Data Analytics.
 
D: Kinesis Data Analytics è disponibile nel piano gratuito di AWS?
No. Kinesis Data Analytics non è attualmente disponibile nel piano gratuito di AWS. Il piano gratuito di AWS è un programma che offre prove gratuite per una serie di servizi AWS.
 
D: Quali costi vengono addebitati se un'applicazione Kinesis Data Analytics è in esecuzione ma non sta elaborando dati?
Per le applicazioni SQL, quando l'applicazione è in esecuzione, l'addebito minimo corrisponde all'utilizzo di una KPU. Per le applicazioni Java, se l'applicazione Kinesis Data Analytics è in esecuzione ti verranno addebitati almeno due KPU e 50 GB di storage dell'applicazione in esecuzione.
 
D: Oltre alle tariffe di Kinesis Data Analytics, vengono addebitati altri costi?
Kinesis Data Analytics è una soluzione di elaborazione di flussi completamente gestita e indipendente sia dall'origine del flusso da cui esegue la lettura dei dati sia dalle destinazioni in cui esegue la scrittura dei dati elaborati. Ti verranno addebitati in modo indipendente i servizi da cui leggi e in cui scrivi nella tua applicazione.

Creazione di applicazioni Java

Scrittura del codice dell'applicazione per applicazioni Java

D: Cos'è Apache Flink?
Apache Flink è un framework e un motore open-source per l'elaborazione dei dati in batch e in flussi. Semplifica lo sviluppo di applicazioni di streaming, poiché fornisce operatori potenti e risolve molto bene i problemi chiave dei flussi come l'elaborazione duplicata. Apache Flink fornisce la distribuzione dei dati, la comunicazione e la tolleranza ai guasti per i calcoli distribuiti sui flussi di dati.
 
D: Come faccio per sviluppare le applicazioni?
Puoi iniziare scaricando le librerie open-source che includono l'SDK AWS, Apache Flink e i connettori per i servizi AWS. Puoi ottenere istruzioni su come scaricare le librerie e creare la prima applicazione nella Guida per lo sviluppatore di Amazon Kinesis Data Analytics per Java.
 
D: Qual è l'aspetto del codice dell'applicazione?
Per scrivere il codice Java utilizzi flussi di dati e operatori di flussi. I flussi di dati dell'applicazione sono la struttura dei dati rispetto ai quali esegui l'elaborazione utilizzando il tuo codice Java. I dati fluiscono continuamente dalle origini nei flussi di dati dell'applicazione. Per definire l'elaborazione sui flussi di dati dell'applicazione vengono utilizzati uno o più operatori di flussi, tra cui transform, partition, aggregate, join e window. I flussi di dati e gli operatori possono essere raggruppati in catene seriali e parallele. Di seguito è riportato un breve esempio in cui viene usato pseudo codice.
DataStream <GameEvent> rawEvents = env.addSource(
	New KinesisStreamSource(“input_events”));
DataStream <UserPerLevel> gameStream =
	rawEvents.map(event - > new UserPerLevel(event.gameMetadata.gameId, 
			event.gameMetadata.levelId,event.userId));
gameStream.keyBy(event -> event.gameId)
            .keyBy(1)
            .window(TumblingProcessingTimeWindows.of(Time.minutes(1)))
            .apply(...) - > {...};
gameStream.addSink(new KinesisStreamSink("myGameStateStream"));
D: Come uso gli operatori?
Gli operatori prendono il flusso di dati di un'applicazione come input e inviano i dati elaborati al flusso di dati di un'applicazione come output. Gli operatori possono essere riuniti per creare applicazioni con più passaggi e non richiedono conoscenze avanzate dei sistemi distribuiti da implementare e utilizzare.
 
D: Quali operatori sono supportati?
Kinesis Data Analytics per Java include oltre 25 operatori da Apache Flink che possono essere utilizzati per risolvere un'ampia varietà di casi d'uso inclusi Map, KeyBy, Aggregations, Window Join e Window. Map ti consente di eseguire un'elaborazione arbitraria, prendendo un elemento da un flusso di dati in entrata e producendo un altro elemento. KeyBy organizza logicamente i dati utilizzando la chiave specificata, consentendoti di elaborare assieme punti di dati simili. Aggregations esegue l'elaborazione su più chiavi come somma, min e max. Window Join unisce due flussi di dati su una determinata chiave e finestra. Window raggruppa i dati utilizzando una chiave e un'operazione che in genere è basata sul tempo, come il conteggio del numero di voci univoche su un periodo di tempo di 5 minuti.
 
Se questi operatori non rispondono alle tue esigenze, puoi crearne di personalizzati. Puoi trovare altri esempi nella sezione Operatori della Guida per lo sviluppatore di Amazon Kinesis Data Analytics per Java. Puoi trovare un elenco completo di operatori di Apache Flink nella sezione Operatori della documentazione di Apache Flink.
 
D: Quali integrazioni sono supportate per un'applicazione Kinesis Data Analytics per Java?
Puoi configurare le integrazioni con pochissime righe di codice. Le librerie open-source basate su Apache Flink supportano origini e destinazioni di flussi di dati, o sink, per la consegna dei dati di processo. Ciò include anche il supporto per l'arricchimento dei dati tramite connettori di input/output asincroni. Di seguito è riportato un elenco di connettori specifici di AWS inclusi nelle librerie open-source.
  • Origini dati in flusso: Amazon Kinesis Data Streams
  • Destinazioni o sink: Amazon Kinesis Data Streams, Amazon Kinesis Data Firehose, Amazon DynamoDB e Amazon S3 (tramite integrazioni dei sink di file).
 
Apache Flink include anche altri connettori fra cui Apache Kafka, Apache Casssandra, Elasticsearch.
 
D: Le integrazioni personalizzate sono supportate?
Puoi aggiungere un'origine o una destinazione alla tua applicazione sfruttando una serie di primitive che ti consentono di leggere e scrivere da file, directory, socket o qualsiasi altra cosa a cui puoi accedere tramite Internet. Apache Flink fornisce queste primitive per origini dati e sink di dati. Le primitive sono accompagnate da configurazioni come la capacità di leggere e scrivere dati in modo continuo o una volta, in modo asincrono o sincrono e molto altro. Ad esempio, puoi impostare un'applicazione in modo da leggere continuamente da Amazon S3 estendendo l'integrazione dell'origine basata su file esistente.
 
D: Quale modello di erogazione fornisce Kinesis Data Analytics per le applicazioni Java?
Le applicazioni Java in Kinesis Data Analytics usano un modello di erogazione "esattamente una volta" se un'applicazione viene costruita usando operatori idempotenti, incluse origini e sink. Ciò significa che i dati elaborati avranno un impatto sui risultati downstream una sola volta. I checkpoint salvano lo stato dell'applicazione corrente e consentono a Kinesis Data Analytics per le applicazioni Java di recuperare la posizione dell'applicazione per fornire la stessa semantica di un'esecuzione senza errori. I checkpoint per le applicazioni Java vengono forniti tramite la funzionalità checkpointing di Apache Flink. Per impostazione predefinita, Kinesis Data Analytics per le applicazioni Java usa la semantica esattamente una volta di Apache Flink. La tua applicazione supporterà la semantica di elaborazione esattamente una volta se progetti le tue applicazioni usando origini, operatori e sink che utilizzano la semantica esattamente una volta di Apache Flink.
 
D: Posso accedere allo storage locale da quello della mia applicazione?
Sì. Kinesis Data Analytics per le applicazioni Java fornisce 50 GB di storage dell'applicazione in esecuzione per Kinesis Processing Unit (KPU). Kinesis Data Analytics ricalibra lo storage in base alla tua applicazione. L'esecuzione dello storage dell'applicazione viene utilizzata per salvare lo stato dell'applicazione tramite i checkpoint. È accessibile anche al codice della tua applicazione da utilizzare come disco temporaneo per memorizzare nella cache i dati o per qualsiasi altro scopo. Kinesis Data Analytics può rimuovere in qualsiasi momento dallo storage dell'applicazione in esecuzione i dati non salvati tramite checkpoint (ad esempio operatori, origini, sink). Tutti i dati memorizzati nello storage dell'applicazione in esecuzione sono crittografati a riposo.
 
D: In che modo Kinesis Data Analytics per Java esegue automaticamente il backup della mia applicazione?
Kinesis Data Analytics esegue automaticamente il backup dello stato della tua applicazione in esecuzione usando checkpoint e snapshot. I checkpoint salvano lo stato dell'applicazione corrente e consentono a Kinesis Data Analytics per le applicazioni Java di recuperare la posizione dell'applicazione per fornire la stessa semantica di un'esecuzione senza errori. I checkpoint utilizzano lo storage dell'applicazione in esecuzione. Gli snapshot salvano un punto di recupero point-in-time per le applicazioni. Gli snapshot utilizzano backup durevoli dell'applicazione.
 
D: Cosa sono gli snapshot dell'applicazione?
Gli snapshot ti consentono di creare e ripristinare la tua applicazione com'era in un momento precedente. Puoi così mantenere lo stato dell'applicazione precedente ed eseguirne il rollback in qualsiasi momento. Sei tu a controllare gli snapshot e puoi averne da zero a migliaia. Gli snapshot usano i backup durevoli dell'applicazione e Kinesis Data Analytics ti addebita i costi in base alle loro dimensioni. Per impostazione predefinita, Kinesis Data Analytics crittografa i dati salvati negli snapshot. Puoi cancellare singoli snapshot tramite API o puoi cancellarli tutti eliminando l'applicazione.
 
D: Quali versioni di Apache Flink sono supportate?
Amazon Kinesis Data Analytics per applicazioni Java supporta Apache Flink 1.6 e Java versione 8.

Creazione di applicazioni SQL

Configurazione dell'input per applicazioni SQL

D: Quali input sono supportati in un'applicazione SQL in Kinesis Data Analytics?
Le applicazioni SQL in Kinesis Data Analytics supportano due tipi di input: origini dati in flusso e origini dati di riferimento. Un'origine dati in flusso è una sequenza di dati in costante generazione che viene letta nell'applicazione per essere elaborata. Un'origine dati di riferimento è una sequenza di dati statici utilizzata dall'applicazione per migliorare i dati provenienti da flussi di origine. Ogni applicazione non può avere più di un flusso di dati di origine e un'origine dati di riferimento. Le applicazioni leggono ed elaborano in modo continuo i nuovi dati provenienti da flussi di dati di origine, inclusi Amazon Kinesis Data Streams e Amazon Kinesis Data Firehose. Inoltre, leggono un'origine dati di riferimento nella sua interezza, ad esempio Amazon S3, per poter migliorare la qualità dei flussi di dati di origine tramite istruzioni SQL JOIN.
 
D: Cos'è un'origine dati di riferimento?
Un'origine dati di riferimento è una sequenza di dati statici utilizzata dall'applicazione per migliorare i dati provenienti da flussi di origine. Per te, l'origine dati di riferimento sarà un oggetto nel bucket S3. Quando l'applicazione SQL viene avviata, Kinesis Data Analytics legge l'oggetto S3 e crea una tabella SQL in applicazione per memorizzare i dati di riferimento. Il codice dell'applicazione li unirà in un secondo momento con il flusso in applicazione. I dati nella tabella SQL possono quindi essere aggiornati richiamando l' API UpdateApplication.
 
D: Come imposto un'origine dati in flusso nella mia applicazione SQL?
Un'origine dati in flusso può essere un flusso di dati Amazon Kinesis o un flusso di distribuzione Amazon Kinesis Data Firehose. L'applicazione SQL in Kinesis Data Analytics procederà alla lettura continua dei nuovi dati dalle origini dati in flusso in tempo reale. I dati vengono resi accessibili nel codice SQL tramite flussi in applicazione. Un flusso in applicazione si comporta come una tabella SQL, perché è in grado di creare, inserire e selezionare elementi. La differenza è che i flussi in applicazione vengono aggiornati costantemente con nuovi dati provenienti dal flusso di dati di origine.
 
Per aggiungere un'origine dati in flusso, puoi usare la Console di gestione AWS. Per ulteriori informazioni, consulta la sezione Configurazione del flusso in ingresso delle applicazioni della Guida per lo sviluppatore di Kinesis Data Analytics per SQL.
 
D: Come imposto un'origine dati di riferimento nella mia applicazione SQL?
Un'origine dati di riferimento può essere un oggetto Amazon S3. L'applicazione SQL di Kinesis Data Analytics procede alla lettura completa dell'oggetto S3 al momento dell'avvio. I dati vengono resi accessibili nel codice SQL tramite una tabella. Il caso d'uso più comune per le origini dati di riferimento è la correzione di dati provenienti dal flusso di dati di origine tramite istruzioni SQL JOIN.
 
Tramite l'interfaccia a riga di comando di AWS, puoi aggiungere un'origine dati di riferimento specificando il bucket S3, l'oggetto, il ruolo IAM e lo schema associato. Kinesis Data Analytics caricherà questi dati all'avvio dell'applicazione, ricaricandoli ogni volta che viene richiamata l'API di aggiornamento.
 
D: Quali sono i formati di dati supportati per le applicazioni SQL?
Le applicazioni SQL in Kinesis Data Analytics sono in grado di rilevare lo schema e di analizzare automaticamente i record JSON e CSV con codifica UTF-8 usando l' API DiscoverInputSchema. Questo schema viene applicato ai dati in lettura provenienti dal flusso al momento dell'inserimento nel flusso in applicazione.
 
Per altri dati codificati in UTF-8 che non usano delimitatore o che usano un delimitatore diverso da CSV, oppure nel caso in cui l'apposita API non sia in grado di riconoscere lo schema, puoi definire uno schema utilizzando l'apposito editor oppure mediante le funzioni di manipolazione delle stringhe per strutturare i dati. Per ulteriori informazioni, consulta la sezione Uso della caratteristica di rilevamento dello schema e relative modifiche nella Guida per lo sviluppatore di Kinesis Data Analytics per SQL.
 
D: In quale forma si presentano i flussi in ingresso al codice SQL?
Kinesis Data Analytics per SQL applica lo schema selezionato e inserisce i dati in uno o più flussi in applicazione per ogni origine di flusso e in una singola tabella SQL per le origini di riferimento. Il numero predefinito di flussi in applicazione è in grado di soddisfare la maggiore parte dei casi d'uso. Se noti che l'applicazione non riesce ad elaborare i dati più recenti provenienti dal flusso di origine, secondo le impostazioni definite nel parametro MillisBehindLatest di CloudWatch, puoi aumentare questo limite. Il numero di flussi in applicazione richiesti può variare in base al throughput del flusso di origine e alla complessità delle query. Il parametro per specificare il numero di flussi in applicazione mappati al flusso di origine è detto parallelismo di input.

Scrittura del codice dell'applicazione per applicazioni SQL

D: Qual è l'aspetto del codice dell'applicazione SQL?
Il codice dell'applicazione è composto da una serie di istruzioni SQL che elaborano l'input e producono l'output. Le istruzioni SQL operano su flussi in applicazione e tabelle di riferimento. Il flusso in applicazione è come una tabella che viene aggiornata di continuo, e su cui puoi eseguire operazioni SQL SELECT e INSERT. Le origini e le destinazioni configurate si presentano al codice SQL tramite flussi in applicazione. Puoi anche creare flussi in applicazione aggiuntivi per memorizzare risultati intermedi delle query.
 
Per operare su flussi in applicazione, puoi usare il seguente modello:
  • Usa sempre un'istruzione SELECT nel contesto di un'istruzione INSERT. Quando selezioni una riga, inserisci i risultati in un altro flusso in applicazione.
  • Usa un'istruzione INSERT nel contesto di un pump. Usa un pump per rendere continua un'istruzione INSERT e procedere alla scrittura su un flusso in applicazione.
  • Usa una pump per collegare diversi flussi in applicazione effettuando la selezione da un flusso e completando l'inserimento in un altro flusso.
 
Il codice illustrato di seguito fornisce un'applicazione funzionante base:
CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (
    ticker_symbol VARCHAR(4),
    change DOUBLE,
    price DOUBLE);

CREATE OR REPLACE PUMP "STREAM_PUMP" AS 
  INSERT INTO "DESTINATION_SQL_STREAM"    
    SELECT STREAM ticker_symbol, change, price    
    FROM "SOURCE_SQL_STREAM_001";
Per ulteriori informazioni sul codice dell'applicazione, consulta il Codice dell’applicazione nella Guida per lo sviluppatore di Kinesis Data Analytics per SQL.
 
D: In che modo Kinesis Data Analytics semplifica la scrittura di codice SQL?
Kinesis Data Analytics include una libreria di modelli di analisi per i casi d'uso più comuni, tra cui filtri di flussi, finestre temporali a cascata e rilevamento di anomalie. Puoi accedere a questi modelli tramite l'editor SQL nella Console di gestione AWS. Dopo aver creato un'applicazione e aver esplorato l'editor SQL, potrai trovare i modelli nell'angolo superiore sinistro della console.
 
D: In che modo è possibile eseguire il rilevamento di anomalie in Kinesis Data Analytics?
Kinesis Data Analytics include funzioni SQL predefinite per diversi tipi di analisi, tra cui il rilevamento di anomalie. È sufficiente una chiamata a questa funzione tramite il codice SQL per rilevare eventuali anomalie in tempo reale. Kinesis Data Analytics usa l'algoritmo Random Cut Forest per implementare questa analisi. Per ulteriori informazioni sull'algoritmo Random Cut Forests, consulta il whitepaper Rilevamento di anomalie di flussi di dati.

Configurazione delle destinazioni nelle applicazioni SQL

D: Quali destinazioni sono supportate?
Kinesis Data Analytics per SQL supporta fino a quattro destinazioni per applicazione. Puoi inoltrare i risultati delle query SQL ad Amazon S3, Amazon Redshift e Amazon Elasticsearch Service (tramite Amazon Kinesis Data Firehose), nonché Amazon Kinesis Data Streams. In ogni caso, puoi scrivere su una destinazione non supportata direttamente da Kinesis Data Analytics inviando i risultati delle query SQL ad Amazon Kinesis Data Streams e sfruttandone l'integrazione con AWS Lambda.
 
D: Come si configura una destinazione?
All'interno del codice dell'applicazione, puoi inoltrare i risultati delle istruzioni SQL verso uno o più flussi in applicazione. Facoltativamente, puoi configurare ulteriormente l'output dell'applicazione affinché tutti i dati scritti in determinati flussi in applicazione vengano inoltrati a un massimo di quattro destinazioni esterne. Tali destinazioni possono essere un bucket Amazon S3, una tabella Amazon RedShift, un dominio Amazon Elasticsearch Service (tramite Amazon Kinesis Data Firehose) e un flusso di dati di Amazon Kinesis. Ogni applicazione supporta fino a quattro destinazioni in qualsiasi combinazione. Per ulteriori informazioni, consulta Configurazione dei flussi di output nella Guida per lo sviluppatore di Kinesis Data Analytics per SQL.
 
D: La destinazione utilizzata abitualmente non è supportata in modo diretto. Come si inviano i risultati delle query SQL a questa destinazione?
Per inoltrare i dati a una destinazione non direttamente supportata puoi impiegare AWS Lambda. A tale scopo, consigliamo di scrivere i risultati in un flusso di dati di Amazon Kinesis per usare poi AWS Lambda per leggere i risultati elaborati e inviarli alla tua destinazione preferita. Per ulteriori informazioni, consulta Esempio: Integrazione di AWS Lambda nella Guida per lo sviluppatore di Kinesis Data Analytics per SQL. In alternativa, puoi usare un flusso di distribuzione Amazon Kinesis Data Firehose per caricare i dati in Amazon S3, attivare quindi una funzione AWS Lambda per leggere i dati e inviarli alla tua destinazione preferita. Per ulteriori informazioni, consulta la sezione Uso di AWS Lamba in combinazione con Amazon S3 nella Guida per lo sviluppatore di AWS Lambda.
 
D: Quale modello di erogazione dei servizi prevede Kinesis Data Analytics?
Kinesis Data Analytics usa un modello di distribuzione "almeno una volta" per l'output dell'applicazione verso le destinazioni configurate. L'applicazione Kinesis Data Analytics presenta punti di controllo interni, ovvero point-in-time in cui i record di output vengono distribuiti alle destinazioni senza perdita di dati. Il servizio usa questi punti di controllo in base alle esigenze per assicurare che l'output venga distribuito correttamente almeno una volta alle destinazioni configurate. Per ulteriori informazioni sui modelli di erogazione dei servizi, consulta la sezione Configurazione del flusso in uscita delle applicazioni nella Guida per lo sviluppatore di Kinesis Data Analytics per SQL.

Confronto con altre soluzioni di elaborazione di flussi

D: Quali differenze ci sono tra Kinesis Data Analytics e l'utilizzo di applicazioni proprietarie tramite Amazon Kinesis Client Library?
Amazon Kinesis Client Library (KCL) è una libreria preconfigurata che semplifica la creazione di applicazioni per la lettura e l'elaborazione di dati provenienti da un flusso di dati Amazon Kinesis. KCL gestisce problemi complessi quali l'adattamento alle variazioni di volume del flusso di dati, il bilanciamento del carico dei dati, la coordinazione di servizi distribuiti e l'elaborazione di dati con tolleranza ai guasti. KCL consente di concentrare l'attenzione sulla logica di business durante la creazione di applicazioni.
 
Con Kinesis Data Analytics puoi elaborare e interrogare i flussi di dati in tempo reale. Puoi elaborare flussi di dati semplicemente tramite SQL standard, perciò non dovrai apprendere specifiche competenze su eventuali linguaggi di programmazione. È sufficiente indirizzare Kinesis Data Analytics su un flusso di dati in ingresso, scrivere query SQL personalizzate e specificare dove caricarne i risultati. Kinesis Data Analytics usa KCL per la lettura dei dati provenienti da flussi di origine all'interno dell'applicazione. Il servizio esegue automaticamente questa e molte altre operazioni associate con l'uso di KCL, ad esempio l'uso di punti di controllo.
 
Se cerchi una soluzione completamente gestita e desideri utilizzare SQL per elaborare i dati per il flusso, Kinesis Data Analytics è l'ideale. KCL è consigliato se devi creare una soluzione di elaborazione personalizzata i cui requisiti vanno oltre l'offerta di Kinesis Data Analytics e se sei sufficientemente esperto per gestire l'applicazione risultante.

Inizia a usare Amazon Kinesis Data Analytics

Product-Page_Standard-Icons_01_Product-Features_SqInk
Calcolo dei costi

Visita la pagina dei prezzi

Ulteriori informazioni 
Product-Page_Standard-Icons_01_Product-Features_SqInk
Esamina la guida alle nozioni di base

Scopri come usare Amazon Kinesis Data Analytics con questa guida dettagliata.

Product-Page_Standard-Icons_03_Start-Building_SqInk
Creazione di applicazioni di streaming

Crea la tua prima applicazione di streaming tramite la console di Amazon Kinesis Data Analytics.