Zephyrnet-logo

Utvid dataarkitekturen din med sanntidsstrømming ved hjelp av Amazon Data Firehose og Snowflake | Amazon Web Services

Dato:

Dagens fartsfylte verden krever rettidig innsikt og beslutninger, noe som driver frem viktigheten av strømming av data. Streaming data refererer til data som kontinuerlig genereres fra en rekke kilder. Kildene til disse dataene, for eksempel klikkstrømhendelser, endringsdatafangst (CDC), applikasjons- og tjenestelogger og Internet of Things (IoT) datastrømmer sprer seg. Snowflake tilbyr to alternativer for å bringe strømmedata inn i plattformen sin: Snowpipe og Snowflake Snowpipe Streaming. Snowpipe er egnet for filinntak (batching) brukstilfeller, for eksempel lasting av store filer fra Amazon enkel lagringstjeneste (Amazon S3) til Snowflake. Snowpipe Streaming, en nyere funksjon utgitt i mars 2023, er egnet for brukstilfeller for radsettinntak (streaming), for eksempel lasting av en kontinuerlig strøm av data fra Amazon Kinesis datastrømmer or Amazon administrerte strømming for Apache Kafka (Amazon MSK).

Før Snowpipe Streaming brukte AWS-kunder Snowpipe for begge brukstilfellene: filinntak og radsettinntak. Først tok du inn strømmedata til Kinesis Data Streams eller Amazon MSK, og brukte deretter Amazon Data Firehose til å samle og skrive strømmer til Amazon S3, etterfulgt av å bruke Snowpipe til å laste dataene inn i Snowflake. Imidlertid kan denne flertrinnsprosessen resultere i forsinkelser på opptil en time før data er tilgjengelig for analyse i Snowflake. Dessuten er det dyrt, spesielt når du har små filer som Snowpipe må laste opp til Snowflake-kundeklyngen.

For å løse dette problemet, integrerer Amazon Data Firehose nå med Snowpipe Streaming, slik at du kan fange opp, transformere og levere datastrømmer fra Kinesis Data Streams, Amazon MSK og Firehose Direct PUT til Snowflake på sekunder til en lav kostnad. Med noen få klikk på Amazon Data Firehose-konsollen kan du sette opp en Firehose-strøm for å levere data til Snowflake. Det er ingen forpliktelser eller forhåndsinvesteringer for å bruke Amazon Data Firehose, og du betaler kun for mengden data som strømmes.

Noen nøkkelfunksjoner til Amazon Data Firehose inkluderer:

  • Fullt administrert serverløs tjeneste – Du trenger ikke å administrere ressurser, og Amazon Data Firehose skaleres automatisk for å matche gjennomstrømmingen til datakilden din uten løpende administrasjon.
  • Enkel å bruke uten kode – Du trenger ikke skrive søknader.
  • Sanntids datalevering – Du kan få data til destinasjonene dine raskt og effektivt på sekunder.
  • Integrasjon med over 20 AWS-tjenester – Sømløs integrasjon er tilgjengelig for mange AWS-tjenester, som Kinesis Data Streams, Amazon MSK, Amazon VPC Flow Logs, AWS WAF-logger, Amazon CloudWatch-logger, Amazon EventBridge, AWS IoT Core og mer.
  • Pay-as-you-go-modell – Du betaler kun for datavolumet som Amazon Data Firehose behandler.
  • Tilkobling – Amazon Data Firehose kan koble til offentlige eller private undernett i din VPC.

Dette innlegget forklarer hvordan du kan bringe strømmedata fra AWS inn i Snowflake i løpet av sekunder for å utføre avanserte analyser. Vi utforsker vanlige arkitekturer og illustrerer hvordan du setter opp en lav-kode, serverløs, kostnadseffektiv løsning for datastrømming med lav latens.

Oversikt over løsning

Følgende er trinnene for å implementere løsningen for å strømme data fra AWS til Snowflake:

  1. Lag en Snowflake-database, et skjema og en tabell.
  2. Opprett en Kinesis-datastrøm.
  3. Lag en Firehose-leveringsstrøm med Kinesis Data Streams som kilde og Snowflake som destinasjon ved å bruke en sikker privat lenke.
  4. For å teste oppsettet, generer eksempelstrømdata fra Amazon Kinesis Data Generator (KDG) med Firehose-leveringsstrømmen som destinasjon.
  5. Spør Snowflake-tabellen for å validere dataene som er lastet inn i Snowflake.

Løsningen er avbildet i følgende arkitekturdiagram.

Forutsetninger

Du bør ha følgende forutsetninger:

Lag en Snowflake-database, et skjema og en tabell

Fullfør følgende trinn for å sette opp dataene dine i Snowflake:

  • Logg på Snowflake-kontoen din og lag databasen:
    create database adf_snf;

  • Opprett et skjema i den nye databasen:
    create schema adf_snf.kds_blog;

  • Opprett en tabell i det nye skjemaet:
    create or replace table iot_sensors
    (sensorId number,
    sensorType varchar,
    internetIP varchar,
    connectionTime timestamp_ntz,
    currentTemperature number
    );

Lag en Kinesis-datastrøm

Fullfør følgende trinn for å opprette datastrømmen din:

  • På Kinesis Data Streams-konsollen velger du Datastrømmer i navigasjonsruten.
  • Velg Lag datastrøm.
  • For Datastrømnavn skriver du inn et navn (f.eks. KDS-Demo-Stream).
  • La de gjenværende innstillingene være standard.
  • Velg Opprett datastrøm.

Opprett en Firehose-leveringsstrøm

Fullfør følgende trinn for å opprette en Firehose-leveringsstrøm med Kinesis Data Streams som kilde og Snowflake som destinasjon:

  • På Amazon Data Firehose-konsollen velger du Lag Firehose-strøm.
  • Til kilde, velg Amazon Kinesis datastrømmer.
  • Til Destinasjon, velg Snowflake.
  • Til Kinesis datastrøm, bla til datastrømmen du opprettet tidligere.
  • Til Navn på brannslangestrøm, la det genererte standardnavnet eller angi et navn du ønsker.
  • Under Tilkoblingsinnstillinger, oppgi følgende informasjon for å koble Amazon Data Firehose til Snowflake:
    • Til Snowflake-konto-URL, skriv inn nettadressen til Snowflake-kontoen din.
    • Til Bruker, skriv inn brukernavnet generert i forutsetningene.
    • Til Privat nøkkel, skriv inn den private nøkkelen generert i forutsetningene. Sørg for at den private nøkkelen er i PKCS8-format. Ikke ta med PEM header-BEGIN prefiks og footer-END suffiks som en del av den private nøkkelen. Hvis nøkkelen er delt over flere linjer, fjern linjeskiftene.
    • Til Rolle, plukke ut Bruk egendefinert Snowflake-rolle og skriv inn IAM-rollen som har tilgang til å skrive til databasetabellen.

Du kan koble til Snowflake ved hjelp av offentlig eller privat tilkobling. Hvis du ikke oppgir et VPC-endepunkt, er standard tilkoblingsmodus offentlig. For å tillate liste Firehose IP-er i Snowflake-nettverkspolicyen din, se Velg Snowflake for reisemålet ditt. Hvis du bruker en privat lenke-URL, oppgi VPCE-ID ved hjelp av SYSTEM$GET_PRIVATELINK_CONFIG:

select SYSTEM$GET_PRIVATELINK_CONFIG();

Denne funksjonen returnerer en JSON-representasjon av Snowflake-kontoinformasjonen som er nødvendig for å lette selvbetjeningskonfigurasjonen av privat tilkobling til Snowflake-tjenesten, som vist i følgende skjermbilde.

  • For dette innlegget bruker vi en privat lenke, så for VPCE ID, skriv inn VPCE-ID.
  • Under Databasekonfigurasjonsinnstillinger, skriv inn Snowflake-databasen, skjemaet og tabellnavnene dine.
  • Sikkerhetskopieringsinnstillinger seksjon, for S3 backup bøtte, skriv inn bøtten du opprettet som en del av forutsetningene.
  • Velg Lag Firehose-strøm.

Alternativt kan du bruke en AWS skyformasjon mal for å lage Firehose-leveringsstrømmen med Snowflake som destinasjon i stedet for å bruke Amazon Data Firehose-konsollen.

For å bruke CloudFormation-stabelen, velg

BDB-4100-CFN-Launch-Stack

Generer eksempelstrømdata
Generer eksempelstrømdata fra KDG med Kinesis-datastrømmen du opprettet:

{ 
"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})}} 
}

Spørr i Snowflake-tabellen

Spørr i Snowflake-tabellen:

select * from adf_snf.kds_blog.iot_sensors;

Du kan bekrefte at dataene generert av KDG som ble sendt til Kinesis Data Streams er lastet inn i Snowflake-tabellen gjennom Amazon Data Firehose.

Feilsøking

Hvis data ikke lastes inn i Kinesis Data Steams etter at KDG sender data til Firehose-leveringsstrømmen, må du oppdatere og sørge for at du er logget på KDG.

Hvis du har gjort noen endringer i definisjonen av Snowflake-destinasjonstabellen, må du opprette Firehose-leveringsstrømmen på nytt.

Rydd opp

For å unngå fremtidige kostnader, slett ressursene du opprettet som en del av denne øvelsen hvis du ikke planlegger å bruke dem videre.

konklusjonen

Amazon Data Firehose gir en enkel måte å levere data til Snowpipe Streaming, slik at du kan spare kostnader og redusere ventetiden til sekunder. For å prøve Amazon Kinesis Firehose med Snowflake, se Amazon Data Firehose med Snowflake som destinasjonslab.


Om forfatterne

Swapna Bandla er senior løsningsarkitekt i AWS Analytics Specialist SA Team. Swapna har en lidenskap for å forstå kundenes data- og analysebehov og gi dem mulighet til å utvikle skybaserte, godt utformede løsninger. Utenom jobben liker hun å tilbringe tid med familien.

Mostafa Mansour er en hovedproduktsjef – Tech hos Amazon Web Services hvor han jobber på Amazon Kinesis Data Firehose. Han spesialiserer seg på å utvikle intuitive produktopplevelser som løser komplekse utfordringer for kunder i stor skala. Når han ikke jobber hardt med Amazon Kinesis Data Firehose, vil du sannsynligvis finne Mostafa på squashbanen, hvor han elsker å ta utfordrere og perfeksjonere dropshotene sine.

Bosco Albuquerque er Sr. Partner Solutions Architect hos AWS og har over 20 års erfaring med å jobbe med database- og analyseprodukter fra bedriftsdatabaseleverandører og skyleverandører. Han har hjulpet teknologiselskaper med å designe og implementere dataanalyseløsninger og -produkter.

spot_img

Siste etterretning

spot_img