Zephyrnet-logotyp

Uppgradera din dataarkitektur med realtidsströmning med Amazon Data Firehose och Snowflake | Amazon webbtjänster

Datum:

Dagens snabba värld kräver snabba insikter och beslut, vilket driver på vikten av strömmande data. Strömmande data avser data som kontinuerligt genereras från en mängd olika källor. Källorna till denna data, såsom klickströmshändelser, ändringsdatainsamling (CDC), applikations- och tjänsteloggar och Internet of Things (IoT) dataströmmar ökar. Snowflake erbjuder två alternativ för att få strömmande data till sin plattform: Snowpipe och Snowflake Snowpipe Streaming. Snowpipe är lämpligt för filintag (batching) användningsfall, som att ladda stora filer från Amazon enkel lagringstjänst (Amazon S3) till Snowflake. Snowpipe Streaming, en nyare funktion som släpptes i mars 2023, är lämplig för användningsfall för raduppsättning (strömning), som att ladda en kontinuerlig ström av data från Amazon Kinesis dataströmmar or Amazon Managed Streaming för Apache Kafka (Amazon MSK).

Innan Snowpipe Streaming använde AWS-kunder Snowpipe för båda användningsfallen: filinmatning och raduppsättning. Först matade du in strömmande data till Kinesis Data Streams eller Amazon MSK, använde sedan Amazon Data Firehose för att aggregera och skriva strömmar till Amazon S3, följt av att använda Snowpipe för att ladda data till Snowflake. Denna flerstegsprocess kan dock resultera i förseningar på upp till en timme innan data är tillgänglig för analys i Snowflake. Dessutom är det dyrt, speciellt när du har små filer som Snowpipe måste ladda upp till Snowflakes kundkluster.

För att lösa det här problemet, integrerar Amazon Data Firehose nu med Snowpipe Streaming, vilket gör att du kan fånga, transformera och leverera dataströmmar från Kinesis Data Streams, Amazon MSK och Firehose Direct PUT till Snowflake på några sekunder till en låg kostnad. Med några få klick på Amazon Data Firehose-konsolen kan du ställa in en Firehose-ström för att leverera data till Snowflake. Det finns inga åtaganden eller förhandsinvesteringar för att använda Amazon Data Firehose, och du betalar bara för mängden data som streamas.

Några nyckelfunktioner hos Amazon Data Firehose inkluderar:

  • Fullt hanterad serverlös tjänst – Du behöver inte hantera resurser, och Amazon Data Firehose skalas automatiskt för att matcha genomströmningen av din datakälla utan pågående administration.
  • Enkel att använda utan kod – Du behöver inte skriva ansökningar.
  • Dataleverans i realtid – Du kan få data till dina destinationer snabbt och effektivt på några sekunder.
  • Integration med över 20 AWS-tjänster – Sömlös integration är tillgänglig för många AWS-tjänster, såsom Kinesis Data Streams, Amazon MSK, Amazon VPC Flow Logs, AWS WAF-loggar, Amazon CloudWatch-loggar, Amazon EventBridge, AWS IoT Core och mer.
  • Pay-as-you-go-modell – Du betalar bara för den datavolym som Amazon Data Firehose bearbetar.
  • Anslutningar – Amazon Data Firehose kan ansluta till offentliga eller privata undernät i din VPC.

Det här inlägget förklarar hur du kan överföra strömmande data från AWS till Snowflake inom några sekunder för att utföra avancerad analys. Vi utforskar vanliga arkitekturer och illustrerar hur man ställer in en serverlös och kostnadseffektiv lösning med låg kod för dataströmning med låg latens.

Översikt över lösningen

Följande är stegen för att implementera lösningen för att strömma data från AWS till Snowflake:

  1. Skapa en Snowflake-databas, ett schema och en tabell.
  2. Skapa en Kinesis-dataström.
  3. Skapa en Firehose-leveransström med Kinesis Data Streams som källa och Snowflake som destination med hjälp av en säker privat länk.
  4. För att testa inställningen, generera exempelströmdata från Amazon Kinesis Data Generator (KDG) med Firehose leveransström som destination.
  5. Fråga i Snowflake-tabellen för att validera data som laddats in i Snowflake.

Lösningen visas i följande arkitekturdiagram.

Förutsättningar

Du bör ha följande förutsättningar:

Skapa en Snowflake-databas, ett schema och en tabell

Slutför följande steg för att ställa in din data i Snowflake:

  • Logga in på ditt Snowflake-konto och skapa databasen:
    create database adf_snf;

  • Skapa ett schema i den nya databasen:
    create schema adf_snf.kds_blog;

  • Skapa en tabell i det nya schemat:
    create or replace table iot_sensors
    (sensorId number,
    sensorType varchar,
    internetIP varchar,
    connectionTime timestamp_ntz,
    currentTemperature number
    );

Skapa en Kinesis-dataström

Utför följande steg för att skapa din dataström:

  • Välj på Kinesis Data Streams-konsolen Dataströmmar i navigeringsfönstret.
  • Välja Skapa dataström.
  • För Dataströmsnamn anger du ett namn (t.ex. KDS-Demo-Stream).
  • Lämna de återstående inställningarna som standard.
  • Välj Skapa dataström.

Skapa en Firehose-leveransström

Slutför följande steg för att skapa en Firehose-leveransström med Kinesis Data Streams som källa och Snowflake som destination:

  • På Amazon Data Firehose-konsolen väljer du Skapa Firehose-ström.
  • För Källaväljer Amazon Kinesis dataströmmar.
  • För Destinationväljer Snöflinga.
  • För Kinesis dataström, bläddra till dataströmmen du skapade tidigare.
  • För Brandslangströms namn, lämna det genererade standardnamnet eller ange ett namn som du föredrar.
  • Enligt Anslutningsinställningar, ange följande information för att ansluta Amazon Data Firehose till Snowflake:
    • För Snowflake-konto URL, ange webbadressen till ditt Snowflake-konto.
    • För Användare, ange användarnamnet som genererats i förutsättningarna.
    • För Privat nyckel, ange den privata nyckel som skapats i förutsättningarna. Se till att den privata nyckeln är i PKCS8-format. Inkludera inte PEM header-BEGIN prefix och footer-END suffix som en del av den privata nyckeln. Om nyckeln är uppdelad över flera rader, ta bort radbrytningarna.
    • För Roll, Välj Använd anpassad Snowflake-roll och ange IAM-rollen som har åtkomst att skriva till databastabellen.

Du kan ansluta till Snowflake med offentlig eller privat anslutning. Om du inte tillhandahåller en VPC-slutpunkt är standardanslutningsläget offentligt. För att tillåta lista Firehose IP-adresser i din Snowflake-nätverkspolicy, se Välj Snowflake för din destination. Om du använder en privat länk-URL, ange VPCE-ID med hjälp av SYSTEM$GET_PRIVATELINK_CONFIG:

select SYSTEM$GET_PRIVATELINK_CONFIG();

Den här funktionen returnerar en JSON-representation av Snowflake-kontoinformationen som är nödvändig för att underlätta självbetjäningskonfigurationen av privat anslutning till Snowflake-tjänsten, som visas i följande skärmdump.

  • För det här inlägget använder vi en privat länk, så för VPCE ID, ange VPCE-ID.
  • Enligt Databaskonfigurationsinställningar, ange din Snowflake-databas, schema och tabellnamn.
  • I Inställningar för säkerhetskopiering avsnitt, för S3 backup hink, ange den hink du skapade som en del av förutsättningarna.
  • Välja Skapa Firehose-ström.

Alternativt kan du använda en AWS molnformation mall för att skapa Firehose-leveransströmmen med Snowflake som destination istället för att använda Amazon Data Firehose-konsolen.

För att använda CloudFormation-stacken, välj

BDB-4100-CFN-Launch-Stack

Generera exempelströmsdata
Generera exempelströmsdata från KDG med Kinesis-dataströmmen du skapade:

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

Fråga i Snowflake-bordet

Fråga i Snowflake-tabellen:

select * from adf_snf.kds_blog.iot_sensors;

Du kan bekräfta att data som genereras av KDG som skickades till Kinesis Data Streams laddas in i Snowflake-tabellen genom Amazon Data Firehose.

Felsökning

Om data inte laddas in i Kinesis Data Steams efter att KDG skickat data till Firehose-leveransströmmen, uppdatera och se till att du är inloggad på KDG.

Om du gjorde några ändringar i definitionen av Snowflake-destinationstabellen, återskapa Firehose-leveransströmmen.

Städa upp

För att undvika framtida avgifter, radera de resurser du skapade som en del av den här övningen om du inte planerar att använda dem ytterligare.

Slutsats

Amazon Data Firehose tillhandahåller ett enkelt sätt att leverera data till Snowpipe Streaming, vilket gör att du kan spara kostnader och minska latensen till sekunder. För att prova Amazon Kinesis Firehose med Snowflake, se Amazon Data Firehose med Snowflake som destinationslabb.


Om författarna

Swapna Bandla är Senior Solutions Architect i AWS Analytics Specialist SA Team. Swapna har en passion för att förstå kundernas data- och analysbehov och ge dem möjlighet att utveckla molnbaserade väldesignade lösningar. Utanför jobbet tycker hon om att umgås med sin familj.

Mostafa Mansour är en huvudproduktchef – Tech på Amazon Web Services där han arbetar på Amazon Kinesis Data Firehose. Han är specialiserad på att utveckla intuitiva produktupplevelser som löser komplexa utmaningar för kunder i stor skala. När han inte jobbar hårt på Amazon Kinesis Data Firehose, kommer du förmodligen hitta Mostafa på squashbanan, där han älskar att ta sig an utmanare och perfekta sina dropshots.

Bosco Albuquerque är Sr. Partner Solutions Architect på AWS och har över 20 års erfarenhet av att arbeta med databas- och analysprodukter från företagsdatabasleverantörer och molnleverantörer. Han har hjälpt teknikföretag att designa och implementera dataanalyslösningar och produkter.

plats_img

Senaste intelligens

plats_img