Betydelsen av datalager och analyser som utförs på datalagerplattformar har ökat stadigt under åren, med många företag som kommer att förlita sig på dessa system som uppdragskritiska för både kortsiktigt operativt beslutsfattande och långsiktig strategisk planering. Traditionellt uppdateras datalager i batchcykler, till exempel månadsvis, veckovis eller dagligen, så att företag kan hämta olika insikter från dem.
Många organisationer inser att dataintag nästan i realtid tillsammans med avancerad analys öppnar för nya möjligheter. Till exempel kan ett finansinstitut förutsäga om en kreditkortstransaktion är bedräglig genom att köra ett anomalidetekteringsprogram i nästan realtidsläge snarare än i batchläge.
I det här inlägget visar vi hur Amazon RedShift kan leverera strömningsintag och förutsägelser om maskininlärning (ML) på en och samma plattform.
Amazon Redshift är ett snabbt, skalbart, säkert och fullt hanterat molndatalager som gör det enkelt och kostnadseffektivt att analysera all din data med standard SQL.
Amazon Redshift ML gör det enkelt för dataanalytiker och databasutvecklare att skapa, träna och tillämpa ML-modeller med bekanta SQL-kommandon i Amazon Redshift-datalager.
Vi är glada att lansera Amazon Redshift Streaming Intag för Amazon Kinesis dataströmmar och Amazon Managed Streaming för Apache Kafka (Amazon MSK), som gör att du kan mata in data direkt från en Kinesis-dataström eller Kafka-ämne utan att behöva iscensätta data Amazon enkel lagringstjänst (Amazon S3). Amazon Redshift-strömningsintag gör att du kan uppnå låg latens i storleksordningen sekunder samtidigt som du matar in hundratals megabyte data i ditt datalager.
Det här inlägget visar hur Amazon Redshift, molndatalagret låter dig bygga ML-förutsägelser i nästan realtid genom att använda Amazon Redshift-strömning och Redshift ML-funktioner med välbekanta SQL-språk.
Lösningsöversikt
Genom att följa stegen som beskrivs i det här inlägget kommer du att kunna konfigurera en producer streamer-applikation på en Amazon Elastic Compute Cloud (Amazon EC2) instans som simulerar kreditkortstransaktioner och skickar data till Kinesis Data Streams i realtid. Du ställer in en Amazon Redshift Streaming Ingestion materialiserad vy på Amazon Redshift, där strömmande data tas emot. Du tränar och bygger en Redshift ML-modell för att generera slutledningar i realtid mot strömmande data.
Följande diagram illustrerar arkitekturen och processflödet.
Steg-för-steg-processen är som följer:
- EC2-instansen simulerar en kreditkortstransaktionsapplikation, som infogar kreditkortstransaktioner i Kinesis dataström.
- Dataströmmen lagrar inkommande kreditkortstransaktionsdata.
- En materialiserad vy för Amazon Redshift Streaming Ingestion skapas ovanpå dataströmmen, som automatiskt matar in strömmande data till Amazon Redshift.
- Du bygger, tränar och distribuerar en ML-modell med Redshift ML. Redshift ML-modellen tränas med hjälp av historiska transaktionsdata.
- Du transformerar strömmande data och genererar ML-förutsägelser.
- Du kan varna kunder eller uppdatera applikationen för att minska risken.
Denna genomgång använder streamingdata för kreditkortstransaktioner. Kreditkortstransaktionsuppgifterna är fiktiva och baseras på en Simulatorn. Kunddataset är också fiktivt och genereras med några slumpmässiga datafunktioner.
Förutsättningar
- Skapa ett Amazon Redshift-kluster.
- Konfigurera klustret för att använda Redshift ML.
- Skapa an AWS identitets- och åtkomsthantering (IAM) användare.
- Uppdatera IAM-rollen kopplad till Redshift-klustret för att inkludera behörigheter för åtkomst till Kinesis-dataströmmen. För mer information om den obligatoriska policyn, se Komma igång med streamingintag.
- Skapa en m5.4xlarge EC2-instans. Vi testade Producer-applikationen med m5.4xlarge-instans men du är fri att använda andra instanstyper. När du skapar instansen använder du amzn2-ami-kernel-5.10-hvm-2.0.20220426.0-x86_64-gp2 AMI.
- För att se till att Python3 är installerat i EC2-instansen, kör följande kommando för att verifiera din Python-version (observera att dataextraheringsskriptet bara fungerar på Python 3):
- Installera följande beroende paket för att köra simulatorprogrammet:
- Konfigurera Amazon EC2 med hjälp av variablerna som AWS-referenser genererade för IAM-användare skapade i steg 3 ovan. Följande skärmdump visar ett exempel med användning av aws konfigurera.
Ställ in Kinesis Dataströmmar
Amazon Kinesis Data Streams är en massivt skalbar och hållbar dataströmningstjänst i realtid. Den kan kontinuerligt fånga gigabyte data per sekund från hundratusentals källor, som klickströmmar på webbplatser, databashändelseströmmar, finansiella transaktioner, flöden i sociala medier, IT-loggar och platsspårningshändelser. Den insamlade informationen är tillgänglig på millisekunder för att möjliggöra användningsfall för realtidsanalys såsom instrumentpaneler i realtid, avvikelser i realtid, dynamisk prissättning och mer. Vi använder Kinesis Data Streams eftersom det är en serverlös lösning som kan skalas baserat på användning.
Skapa en Kinesis-dataström
Först måste du skapa en Kinesis-dataström för att ta emot streamingdata:
- Välj på Amazon Kinesis-konsolen Dataströmmar i navigeringsfönstret.
- Välja Skapa dataström.
- För Dataströmnamn, stiga på
cust-payment-txn-stream
. - För Kapacitetsläge, Välj På begäran.
- För resten av alternativen, välj standardalternativen och följ anvisningarna för att slutföra installationen.
- Fånga ARN för den skapade dataströmmen att använda i nästa avsnitt när du definierar din IAM-policy.
Ställ in behörigheter
För att en streamingapplikation ska kunna skriva till Kinesis Data Streams måste applikationen ha tillgång till Kinesis. Du kan använda följande policyförklaring för att ge simulatorprocessen som du ställer in i nästa avsnitt åtkomst till dataströmmen. Använd ARN för dataströmmen som du sparade i föregående steg.
Konfigurera streamproducenten
Innan vi kan konsumera strömmande data i Amazon Redshift behöver vi en strömmande datakälla som skriver data till Kinesis-dataströmmen. Det här inlägget använder en specialbyggd datagenerator och AWS SDK för Python (Boto3) för att publicera data till dataströmmen. För installationsinstruktioner, se Producent Simulator. Denna simulatorprocess publicerar strömmande data till dataströmmen som skapades i föregående steg (cust-payment-txn-stream
).
Konfigurera strömkonsumenten
Det här avsnittet talar om att konfigurera strömkonsumenten (Amazon Redshift streaming-intagsvy).
Amazon Redshift Streaming Ingestion ger låg latens, höghastighetsintag av strömmande data från Kinesis Data Streams till en Amazon Redshift materialiserad vy. Du kan konfigurera ditt Amazon Redshift-kluster för att aktivera streamingintag och skapa en materialiserad vy med automatisk uppdatering, med hjälp av SQL-satser, som beskrivs i Skapa materialiserade vyer i Amazon Redshift. Den automatiska materialiserade vyuppdateringsprocessen kommer att mata in strömmande data med hundratals megabyte data per sekund från Kinesis Data Streams till Amazon Redshift. Detta resulterar i snabb åtkomst till extern data som snabbt uppdateras.
Efter att ha skapat den materialiserade vyn kan du komma åt dina data från dataströmmen med SQL och förenkla dina datapipelines genom att skapa materialiserade vyer direkt ovanpå strömmen.
Slutför följande steg för att konfigurera en Amazon Redshift-strömningsmaterialiserad vy:
- På IAM-konsolen väljer du policyer i navigeringsfönstret.
- Välja Skapa policy.
- Skapa en ny IAM-policy som heter
KinesisStreamPolicy
. För definitionen av streamingpolicy, se Komma igång med streamingintag. - Välj i navigeringsfönstret roller.
- Välj Skapa roll.
- Välja AWS-tjänst Och välj Redshift och Redshift anpassningsbara.
- Skapa en ny roll som heter
redshift-streaming-role
och bifoga policynKinesisStreamPolicy
. - Skapa ett externt schema för att mappa till Kinesis Data Streams:
Nu kan du skapa en materialiserad vy för att konsumera strömdata. Du kan använda SUPER-datatypen för att lagra nyttolasten som den är, i JSON-format, eller använda Amazon Redshift JSON-funktioner för att analysera JSON-data i enskilda kolumner. För det här inlägget använder vi den andra metoden eftersom schemat är väldefinierat.
- Skapa den materialiserade vyn för streamingintag
cust_payment_tx_stream
. Genom att ange AUTO UPPDATERING JA i följande kod kan du aktivera automatisk uppdatering av vyn för strömmande intag, vilket sparar tid genom att undvika att bygga datapipelines:
Observera att json_extract_path_text
har en längdbegränsning på 64 KB. From_varbye filtrerar även poster större än 65KB.
- Uppdatera data.
Amazon Redshift strömmande materialiserade vyn uppdateras automatiskt av Amazon Redshift åt dig. På så sätt behöver du inte oroa dig för att data är föråldrade. Med materialiserad vy automatisk uppdatering laddas data automatiskt in i Amazon Redshift när den blir tillgänglig i strömmen. Om du väljer att manuellt utföra denna operation, använd följande kommando:
- Låt oss nu fråga den strömmande materialiserade vyn för att se exempeldata:
- Låt oss kontrollera hur många poster som finns i streamingvyn nu:
Nu har du slutfört konfigureringen av Amazon Redshift-strömningsintagsvyn, som kontinuerligt uppdateras med inkommande kreditkortstransaktionsdata. I min inställning ser jag att runt 67,000 XNUMX poster har dragits in i strömningsvyn vid den tidpunkt då jag körde min sökning för att välja antal. Detta nummer kan vara annorlunda för dig.
Rödförskjutning ML
Med Redshift ML kan du ta med en förtränad ML-modell eller bygga en inbyggd. För mer information, se Använder maskininlärning i Amazon Redshift.
I det här inlägget tränar och bygger vi en ML-modell med hjälp av en historisk datauppsättning. Uppgifterna innehåller en tx_fraud
fält som flaggar en historisk transaktion som bedräglig eller inte. Vi bygger en övervakad ML-modell med hjälp av Redshift Auto ML, som lär sig av denna datauppsättning och förutsäger inkommande transaktioner när de körs genom prediktionsfunktionerna.
I följande avsnitt visar vi hur du ställer in den historiska datamängden och kunddata.
Ladda den historiska datamängden
Den historiska tabellen har fler fält än vad den strömmande datakällan har. Dessa fält innehåller kundens senaste utgifter och terminalriskpoäng, som antalet bedrägliga transaktioner som beräknats genom att transformera strömmande data. Det finns också kategoriska variabler som helgtransaktioner eller nattliga transaktioner.
För att ladda historiska data, kör kommandona med hjälp av Amazon Redshift frågeställare.
Skapa transaktionshistoriktabellen med följande kod. DDL finns också på GitHub.
Låt oss kontrollera hur många transaktioner som laddas:
Kontrollera trenden för månatliga och icke-bedrägeritransaktioner:
Skapa och ladda kunddata
Nu skapar vi kundtabellen och laddar data, som innehåller e-post och telefonnummer till kunden. Följande kod skapar tabellen, laddar data och samplar tabellen. Tabellen DDL finns tillgänglig på GitHub.
Vår testdata har cirka 5,000 XNUMX kunder. Följande skärmdump visar exempel på kunddata.
Bygg en ML-modell
Vår historiska korttransaktionstabell har 6 månaders data, som vi nu använder för att träna och testa ML-modellen.
Modellen tar följande fält som indata:
Vi får tx_fraud
som utdata.
Vi delar upp dessa data i utbildnings- och testdatauppsättningar. Transaktioner från 2022-04-01 till 2022-07-31 är för utbildningssetet. Transaktioner från 2022-08-01 till 2022-09-30 används för testsetet.
Låt oss skapa ML-modellen med den välbekanta SQL CREATE MODEL uttalande. Vi använder en grundläggande form av kommandot Redshift ML. Följande metod använder Amazon SageMaker autopilot, som utför dataförberedelse, funktionsutveckling, modellval och utbildning automatiskt åt dig. Ange namnet på din S3-hink som innehåller koden.
Jag kallar ML-modellen som Cust_cc_txn_fd
, och prediktionsfunktionen som fn_customer_cc_fd
. FROM-satsen visar indatakolumnerna från den historiska tabellen public.cust_payment_tx_history
. Målparametern är inställd på tx_fraud
, som är målvariabeln som vi försöker förutsäga. IAM_Role
är inställd på standard eftersom klustret är konfigurerat med den här rollen; Om inte, måste du tillhandahålla din Amazon Redshift-kluster IAM-roll ARN. Jag ställer in max_runtime
till 3,600 XNUMX sekunder, vilket är den tid vi ger till SageMaker för att slutföra processen. Redshift ML distribuerar den bästa modellen som identifieras i denna tidsram.
Beroende på modellens komplexitet och mängden data kan det ta lite tid innan modellen är tillgänglig. Om du upptäcker att ditt modellval inte är komplett, höj värdet för max_runtime
. Du kan ställa in ett maxvärde på 9999.
Kommandot CREATE MODEL körs asynkront, vilket betyder att det körs i bakgrunden. Du kan använda VISA MODELL kommando för att se modellens status. När statusen visas som Klar betyder det att modellen är utbildad och distribuerad.
Följande skärmdumpar visar vår produktion.
Från utgången ser jag att modellen har blivit korrekt igenkänd som BinaryClassification
, och F1 har valts ut som mål. De F1-poäng är ett mått som tar hänsyn till båda precision och återkallelse. Den returnerar ett värde mellan 1 (perfekt precision och återkallelse) och 0 (lägsta möjliga poäng). I mitt fall är det 0.91. Ju högre värde, desto bättre prestanda.
Låt oss testa den här modellen med testdatauppsättningen. Kör följande kommando, som hämtar exempelförutsägelser:
Vi ser att vissa värden matchar och andra inte. Låt oss jämföra förutsägelser med grundsanningen:
Vi validerade att modellen fungerar och att F1-poängen är bra. Låt oss gå vidare till att generera förutsägelser om strömmande data.
Förutse bedrägliga transaktioner
Eftersom Redshift ML-modellen är redo att användas kan vi använda den för att köra förutsägelser mot intag av strömmande data. Den historiska datamängden har fler fält än vad vi har i den strömmande datakällan, men de är bara mätvärden för senaste och frekvens kring kunden och terminalrisken för en bedräglig transaktion.
Vi kan applicera transformationerna ovanpå strömmande data mycket enkelt genom att bädda in SQL i vyerna. Skapa första vy, som aggregerar strömmande data på kundnivå. Skapa sedan andra vy, som aggregerar strömmande data på terminalnivå, och tredje synen, som kombinerar inkommande transaktionsdata med aggregerad kund- och terminaldata och anropar prediktionsfunktionen på ett ställe. Koden för den tredje vyn är följande:
Kör en SELECT-sats på vyn:
När du kör SELECT-satsen upprepade gånger går de senaste kreditkortstransaktionerna igenom transformationer och ML-förutsägelser i nästan realtid.
Detta visar kraften i Amazon Redshift – med lättanvända SQL-kommandon kan du transformera strömmande data genom att tillämpa komplexa fönsterfunktioner och använda en ML-modell för att förutsäga bedrägliga transaktioner i ett steg, utan att bygga komplexa datapipelines eller bygga och hantera ytterligare infrastruktur.
Utöka lösningen
Eftersom dataströmmarna in och ML-förutsägelser görs i nästan realtid, kan du bygga affärsprocesser för att varna din kund med hjälp av Amazon enkel meddelandetjänst (Amazon SNS), eller så kan du låsa kundens kreditkortskonto i ett operativt system.
Det här inlägget går inte in på detaljerna för dessa operationer, men om du är intresserad av att lära dig mer om att bygga händelsedrivna lösningar med Amazon Redshift, se följande GitHub repository.
Städa upp
För att undvika framtida avgifter, ta bort resurserna som skapades som en del av det här inlägget.
Slutsats
I det här inlägget demonstrerade vi hur man ställer in en Kinesis-dataström, konfigurerar en producent och publicerar data till strömmar och sedan skapar en Amazon Redshift Streaming Ingestion-vy och frågar efter data i Amazon Redshift. Efter att data fanns i Amazon Redshift-klustret visade vi hur man tränar en ML-modell och bygger en förutsägelsefunktion och applicerar den mot strömmande data för att generera förutsägelser nästan i realtid.
Om du har feedback eller frågor, vänligen lämna dem i kommentarerna.
Om författarna
Bhanu Pittampally är en Analytics Specialist Solutions Architect baserad i Dallas. Han är specialiserad på att bygga analytiska lösningar. Hans bakgrund är inom datalager – arkitektur, utveckling och administration. Han har varit inom data- och analysområdet i över 15 år.
Praveen Kadipikonda är Senior Analytics Specialist Solutions Architect på AWS baserad i Dallas. Han hjälper kunder att bygga effektiva, presterande och skalbara analytiska lösningar. Han har arbetat med att bygga databaser och datalagerlösningar i över 15 år.
Ritesh Kumar Sinha är en Analytics Specialist Solutions Architect baserad i San Francisco. Han har hjälpt kunder att bygga skalbara datalager och big data-lösningar i över 16 år. Han älskar att designa och bygga effektiva end-to-end-lösningar på AWS. På fritiden älskar han att läsa, gå och yoga.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- Platoblockchain. Web3 Metaverse Intelligence. Kunskap förstärkt. Tillgång här.
- Källa: https://aws.amazon.com/blogs/big-data/near-real-time-fraud-detection-using-amazon-redshift-streaming-ingestion-with-amazon-kinesis-data-streams-and-amazon-redshift-ml/
- 000
- 000 kunder
- 1
- 10
- 100
- 11
- 15 år
- 67
- 7
- 9
- a
- Able
- Om oss
- ovan
- tillgång
- Konto
- Uppnå
- Handling
- Annat
- administrering
- avancerat
- Efter
- mot
- Varna
- Alla
- tillåter
- amason
- Amazon EC2
- Amazon Kinesis
- mängd
- analytiker
- Analytisk
- analytics
- analysera
- och
- avvikelse av anomali
- Apache
- Ansökan
- Ansök
- Tillämpa
- arkitektur
- runt
- bifoga
- bil
- Automat
- automatiskt
- tillgänglig
- undvika
- AWS
- bakgrund
- baserat
- grundläggande
- därför att
- blir
- BÄST
- Bättre
- mellan
- Stor
- Stora data
- föra
- SLUTRESULTAT
- Byggnad
- företag
- affärsprocesser
- företag
- Ring
- kallas
- Samtal
- fånga
- kortet
- Vid
- fall
- karaktär
- avgifter
- ta
- Välja
- Stad
- cloud
- kluster
- koda
- Kolonner
- kombinerar
- kommande
- kommentarer
- jämföra
- fullborda
- fullborda
- komplex
- Komplexiteten
- Compute
- anser
- Konsol
- konsumera
- Konsumenten
- innehåller
- kostnadseffektiv
- kunde
- skapa
- skapas
- skapar
- Skapa
- referenser
- kredit
- kreditkort
- kund
- konsument data
- Kunder
- cykler
- dagligen
- Dallas
- datum
- Förberedelse av data
- datalagret
- datalager
- Databas
- databaser
- datauppsättningar
- Datum
- Beslutsfattande
- Standard
- definierande
- leverera
- demonstreras
- beroende
- distribuera
- utplacerade
- vecklas ut
- beskriven
- Designa
- detaljer
- Detektering
- utvecklare
- Utveckling
- olika
- direkt
- inte
- gör
- inte
- dow
- dynamisk
- lätt
- LÄTTANVÄND
- effekt
- effektiv
- möjliggöra
- möjliggör
- början till slut
- Teknik
- ange
- Eter (ETH)
- händelse
- händelser
- exempel
- exciterade
- extern
- extraktion
- f1
- bekant
- SNABB
- Leverans
- Funktioner
- återkoppling
- fält
- Fält
- filter
- finansiella
- hitta
- flaggorna
- flöda
- följer
- efter
- följer
- formen
- format
- hittade
- RAM
- Francisco
- bedrägeri
- spårning av bedrägerier
- Fri
- Frekvens
- från
- fullständigt
- fungera
- funktioner
- framtida
- generera
- genereras
- generera
- Generatorn
- skaffa sig
- Ge
- Go
- god
- bevilja
- Marken
- Grupp
- har
- hjälpte
- hjälper
- högre
- Markera
- historisk
- historia
- Hur ser din drömresa ut
- How To
- html
- HTTPS
- Hundratals
- IAM
- identifierade
- Identitet
- vikt
- in
- innefattar
- Inkommande
- Öka
- ökande
- individuellt
- informationen
- Infrastruktur
- ingång
- Insert
- insikter
- installera
- exempel
- Institute
- instruktioner
- intresserad
- IT
- delta
- json
- kafka
- Kinesis dataströmmar
- språk
- större
- Latens
- senaste
- lansera
- inlärning
- Lämna
- Längd
- Nivå
- BEGRÄNSA
- begränsning
- läsa in
- laster
- lång sikt
- Låg
- Maskinen
- maskininlärning
- gjord
- göra
- GÖR
- förvaltade
- hantera
- manuellt
- många
- karta
- massivt
- matchande
- matplotlib
- max
- betyder
- Media
- metod
- metriska
- Metrics
- Mildra
- ML
- Mode
- modell
- modeller
- månad
- månader
- mer
- mest
- flytta
- namn
- Navigering
- Behöver
- behov
- Nya
- Nästa
- anmälan
- antal
- numpy
- mål
- ONE
- öppnas
- drift
- operativa
- Verksamhet
- möjligheter
- Tillbehör
- beställa
- organisationer
- Övriga
- skisse
- paket
- pandor
- panelen
- parameter
- del
- perfekt
- utföra
- prestanda
- utför
- behörigheter
- telefon
- Plats
- planering
- plattform
- Plattformar
- plato
- Platon Data Intelligence
- PlatonData
- snälla du
- Strategier
- policy
- möjlig
- Inlägg
- kraft
- Precision
- förutse
- förutsägelse
- Förutsägelser
- Förutspår
- föregående
- prissättning
- process
- processer
- producent
- Program
- ge
- ger
- allmän
- publicera
- Python
- frågor
- snabbt
- slumpmässig
- Läsning
- redo
- verklig
- realtid
- data i realtid
- inse
- motta
- mottagna
- senaste
- erkänt
- register
- UPPREPAT
- ersätta
- Obligatorisk
- resurs
- Resurser
- REST
- Resultat
- återgår
- Risk
- Roll
- Körning
- rinnande
- sagemaker
- San
- San Francisco
- skalbar
- Skala
- skärmdumpar
- sDK
- havsfödda
- Andra
- sekunder
- §
- sektioner
- säkra
- vald
- Val
- Server
- service
- in
- inställning
- inställningar
- inställning
- kortsiktigt
- show
- Visar
- Enkelt
- förenkla
- Simulatorn
- So
- Social hållbarhet
- sociala medier
- lösning
- Lösningar
- några
- Källa
- Källor
- specialist
- specialiserat
- spendera
- delas
- SQL
- Etapp
- standard
- igång
- Ange
- .
- uttalanden
- status
- Steg
- Steg
- förvaring
- lagra
- lagrar
- Strategisk
- ström
- streaming
- streaming service
- strömmar
- sådana
- super
- system
- System
- bord
- Ta
- tar
- Talks
- Målet
- terminal
- testa
- Smakämnen
- Tredje
- tusentals
- Genom
- tid
- tidsstämpel
- till
- topp
- ämne
- traditionellt
- Tåg
- tränad
- Utbildning
- transaktion
- transaktion
- Transaktioner
- Förvandla
- transformationer
- omvandla
- Trend
- Uppdatering
- uppdaterad
- Användning
- användning
- Användare
- validerade
- värde
- Värden
- olika
- Sanning
- version
- utsikt
- visningar
- gående
- genomgång
- Warehouse
- Lagring
- Webbplats
- helgen
- vecka
- Vad
- som
- medan
- wikipedia
- kommer
- utan
- arbetade
- arbetssätt
- fungerar
- skriva
- år
- Yoga
- Din
- zephyrnet