Logo Zephyrnet

Migliora la tua architettura dei dati con lo streaming in tempo reale utilizzando Amazon Data Firehose e Snowflake | Servizi Web di Amazon

Data:

Il mondo frenetico di oggi richiede approfondimenti e decisioni tempestive, il che sta determinando l'importanza dello streaming di dati. I dati in streaming si riferiscono a dati generati continuamente da una varietà di fonti. Le fonti di questi dati, come eventi clickstream, change data capture (CDC), registri di applicazioni e servizi e flussi di dati Internet of Things (IoT) stanno proliferando. Snowflake offre due opzioni per portare i dati in streaming nella sua piattaforma: Snowpipe e Snowflake Snowpipe Streaming. Snowpipe è adatto per casi d'uso di ingestione di file (batch), come il caricamento di file di grandi dimensioni da Servizio di archiviazione semplice Amazon (Amazon S3) a Fiocco di neve. Snowpipe Streaming, una funzionalità più recente rilasciata a marzo 2023, è adatta per i casi d'uso di inserimento di set di righe (streaming), come il caricamento di un flusso continuo di dati da Flussi di dati di Amazon Kinesis or Streaming gestito da Amazon per Apache Kafka (AmazonMSK).

Prima di Snowpipe Streaming, i clienti AWS utilizzavano Snowpipe per entrambi i casi d'uso: inserimento di file e inserimento di set di righe. Innanzitutto, hai acquisito dati di streaming su Kinesis Data Streams o Amazon MSK, quindi hai utilizzato Amazon Data Firehose per aggregare e scrivere flussi su Amazon S3, quindi hai utilizzato Snowpipe per caricare i dati in Snowflake. Tuttavia, questo processo in più fasi può comportare ritardi fino a un'ora prima che i dati siano disponibili per l'analisi in Snowflake. Inoltre, è costoso, soprattutto quando si hanno file di piccole dimensioni che Snowpipe deve caricare nel cluster clienti Snowflake.

Per risolvere questo problema, Amazon Data Firehose ora si integra con Snowpipe Streaming, consentendoti di acquisire, trasformare e distribuire flussi di dati da Kinesis Data Streams, Amazon MSK e Firehose Direct PUT a Snowflake in pochi secondi a un costo contenuto. Con pochi clic sulla console Amazon Data Firehose, puoi impostare un flusso Firehose per fornire dati a Snowflake. Non sono previsti impegni o investimenti iniziali per utilizzare Amazon Data Firehose e paghi solo per la quantità di dati trasmessi in streaming.

Alcune funzionalità chiave di Amazon Data Firehose includono:

  • Servizio serverless completamente gestito – Non è necessario gestire le risorse e Amazon Data Firehose si ridimensiona automaticamente per corrispondere al throughput della tua origine dati senza un'amministrazione continua.
  • Semplice da usare senza codice – Non è necessario scrivere applicazioni.
  • Consegna dei dati in tempo reale – Puoi ottenere i dati alle tue destinazioni in modo rapido ed efficiente in pochi secondi.
  • Integrazione con oltre 20 servizi AWS – L'integrazione perfetta è disponibile per molti servizi AWS, come Kinesis Data Streams, Amazon MSK, Amazon VPC Flow Logs, AWS WAF logs, Amazon CloudWatch Logs, Amazon EventBridge, AWS IoT Core e altro ancora.
  • Modello a consumo – Paghi solo per il volume di dati elaborato da Amazon Data Firehose.
  • Connettività – Amazon Data Firehose può connettersi a sottoreti pubbliche o private nel tuo VPC.

Questo post spiega come trasferire i dati in streaming da AWS a Snowflake in pochi secondi per eseguire analisi avanzate. Esploriamo architetture comuni e illustriamo come configurare una soluzione low-code, serverless ed economica per lo streaming di dati a bassa latenza.

Panoramica della soluzione

Di seguito sono riportati i passaggi per implementare la soluzione per lo streaming dei dati da AWS a Snowflake:

  1. Crea un database, uno schema e una tabella Snowflake.
  2. Crea un flusso di dati Kinesis.
  3. Crea un flusso di distribuzione Firehose con Kinesis Data Streams come origine e Snowflake come destinazione utilizzando un collegamento privato sicuro.
  4. Per testare la configurazione, generare dati di flusso di esempio dal file Generatore di dati Amazon Kinesis (KDG) con il flusso di consegna Firehose come destinazione.
  5. Interrogare la tabella Snowflake per convalidare i dati caricati in Snowflake.

La soluzione è illustrata nel seguente diagramma dell'architettura.

Prerequisiti

Dovresti avere i seguenti prerequisiti:

Crea un database, uno schema e una tabella Snowflake

Completa i seguenti passaggi per impostare i tuoi dati in Snowflake:

  • Accedi al tuo account Snowflake e crea il database:
    create database adf_snf;

  • Crea uno schema nel nuovo database:
    create schema adf_snf.kds_blog;

  • Crea una tabella nel nuovo schema:
    create or replace table iot_sensors
    (sensorId number,
    sensorType varchar,
    internetIP varchar,
    connectionTime timestamp_ntz,
    currentTemperature number
    );

Crea un flusso di dati Kinesis

Completa i seguenti passaggi per creare il tuo flusso di dati:

  • Nella console Kinesis Data Streams, scegli Flussi di dati nel pannello di navigazione.
  • Scegli Crea flusso di dati.
  • Per Nome flusso di dati, inserisci un nome (ad esempio, KDS-Demo-Stream).
  • Lascia le restanti impostazioni predefinite.
  • Scegli Crea flusso di dati.

Crea un flusso di consegna Firehose

Completa i passaggi seguenti per creare un flusso di distribuzione Firehose con Kinesis Data Streams come origine e Snowflake come destinazione:

  • Nella console Amazon Data Firehose, scegli Crea il flusso Firehose.
  • Nel Fontescegli Flussi di dati di Amazon Kinesis.
  • Nel Nei Dintorniscegli Fiocco di neve.
  • Nel Flusso di dati Kinesis, vai al flusso di dati creato in precedenza.
  • Nel Nome del flusso Firehose, lascia il nome generato predefinito o inserisci un nome di tua preferenza.
  • Sotto Impostazioni di connessione, fornisci le seguenti informazioni per connettere Amazon Data Firehose a Snowflake:
    • Nel URL dell'account Snowflake, inserisci l'URL del tuo account Snowflake.
    • Nel Utente, inserire il nome utente generato nei prerequisiti.
    • Nel Chiave privata, inserire la chiave privata generata nei prerequisiti. Assicurati che la chiave privata sia nel formato PKCS8. Non includere il PEM header-BEGIN prefisso e footer-END suffisso come parte della chiave privata. Se la chiave è suddivisa su più righe, rimuovere le interruzioni di riga.
    • Nel Ruolo, selezionare Utilizza il ruolo Fiocco di neve personalizzato e inserisci il ruolo IAM che ha accesso in scrittura alla tabella del database.

Puoi connetterti a Snowflake utilizzando la connettività pubblica o privata. Se non fornisci un endpoint VPC, la modalità di connettività predefinita è pubblica. Per consentire l'elenco degli IP Firehose nella policy di rete Snowflake, fare riferimento a Scegli Fiocco di neve per la tua destinazione. Se utilizzi un URL di collegamento privato, fornisci l'ID VPCE utilizzando SYSTEM$GET_PRIVATELINK_CONFIG:

select SYSTEM$GET_PRIVATELINK_CONFIG();

Questa funzione restituisce una rappresentazione JSON delle informazioni sull'account Snowflake necessarie per facilitare la configurazione self-service della connettività privata al servizio Snowflake, come mostrato nello screenshot seguente.

  • Per questo post utilizziamo un collegamento privato, quindi per ID VPCE, inserisci l'ID VPCE.
  • Sotto Impostazioni di configurazione del database, inserisci il database, lo schema e i nomi delle tabelle di Snowflake.
  • Nel Impostazioni di backup sezione, per Secchio di riserva S3, inserisci il bucket creato come parte dei prerequisiti.
  • Scegli Crea il flusso Firehose.

In alternativa, puoi usare an AWS CloudFormazione modello per creare il flusso di consegna Firehose con Snowflake come destinazione anziché utilizzare la console Amazon Data Firehose.

Per utilizzare lo stack CloudFormation, scegli

BDB-4100-CFN-Stack di lancio

Genera dati del flusso di esempio
Genera dati del flusso di esempio dal KDG con il flusso di dati Kinesis che hai creato:

{ 
"sensorId": {{random.number(999999999)}}, 
"sensorType": "{{random.arrayElement( ["Thermostat","SmartWaterHeater","HVACTemperatureSensor","WaterPurifier"] )}}", 
"internetIP": "{{internet.ip}}", 
"connectionTime": "{{date.now("YYYY-MM-DDTHH:m:ss")}}", 
"currentTemperature": {{random.number({"min":10,"max":150})}} 
}

Interroga la tabella Snowflake

Interroga la tabella Snowflake:

select * from adf_snf.kds_blog.iot_sensors;

Puoi verificare che i dati generati dal KDG inviati a Kinesis Data Streams siano caricati nella tabella Snowflake tramite Amazon Data Firehose.

Troubleshooting

Se i dati non vengono caricati in Kinesis Data Steams dopo che il KDG ha inviato i dati al flusso di distribuzione Firehose, aggiorna e assicurati di aver effettuato l'accesso al KDG.

Se hai apportato modifiche alla definizione della tabella di destinazione Snowflake, ricrea il flusso di consegna Firehose.

ripulire

Per evitare di incorrere in addebiti futuri, elimina le risorse create come parte di questo esercizio se non prevedi di utilizzarle ulteriormente.

Conclusione

Amazon Data Firehose fornisce un modo semplice per fornire dati a Snowpipe Streaming, consentendoti di risparmiare sui costi e ridurre la latenza a pochi secondi. Per provare Amazon Kinesis Firehose con Snowflake, fai riferimento ad Amazon Data Firehose con Snowflake come laboratorio di destinazione.


Informazioni sugli autori

Swapna Bandla è un Senior Solutions Architect nel team AWS Analytics Specialist SA. Swapna ha la passione di comprendere le esigenze di dati e analisi dei clienti e di consentire loro di sviluppare soluzioni ben architettate basate sul cloud. Al di fuori del lavoro, le piace trascorrere del tempo con la sua famiglia.

Mostafa Mansur è Principal Product Manager – Tech presso Amazon Web Services, dove lavora su Amazon Kinesis Data Firehose. È specializzato nello sviluppo di esperienze di prodotto intuitive che risolvono sfide complesse per i clienti su larga scala. Quando non è al lavoro su Amazon Kinesis Data Firehose, probabilmente troverai Mostafa sul campo da squash, dove ama affrontare gli avversari e perfezionare i suoi dropshot.

BoscoAlbuquerque è Sr. Partner Solutions Architect presso AWS e ha oltre 20 anni di esperienza nella collaborazione con prodotti di database e analisi di fornitori di database aziendali e fornitori di cloud. Ha aiutato aziende tecnologiche a progettare e implementare soluzioni e prodotti di analisi dei dati.

spot_img

L'ultima intelligenza

spot_img