Szenario 3: Aufbereitung von Clickstream-Daten für Erkenntnisse aus Daten
Fast Sneakers ist eine Modeboutique mit Schwerpunkt auf im Trend liegenden Sneakers. Der Preis für ein bestimmtes Paar Schuhe kann steigen oder fallen, je nach Bestand und Trends, z. B. welcher Prominente oder Sportstar gestern Abend im Fernsehen mit Markensneakern gesehen wurde. Für das Unternehmen Fast Sneakers ist es wichtig, diese Trends zu verfolgen und zu analysieren, um seinen Umsatz zu maximieren.
Fast Sneakers möchte zusätzlichen Projektaufwand für die Wartung einer neuen Infrastruktur vermeiden. Es möchten in der Lage sein, die Entwicklung auf die am Projekt beteiligten Parteien so aufzuteilen, dass sich die Dateningenieure auf die Datentransformation konzentrieren können und die Datenwissenschaftler separat an ihren ML-Funktionen arbeiten können.
Um schnell zu reagieren und die Preise automatisch an die Nachfrage anzupassen, streamt Fast Sneakers wichtige Ereignisse (wie Klick- und Kaufdaten), transformiert und ergänzt die Ereignisdaten und speist sie in ein ML-Modell ein. Sein ML-Modell kann feststellen, ob eine Preisanpassung erforderlich ist. Auf diese Weise kann Fast Sneakers seine Preise automatisch anpassen, um den Gewinn für seine Produkte zu maximieren.
Fast Sneakers – Preisanpassungen in Echtzeit
Dieses Architekturdiagramm zeigt die Echtzeit-Streaming-Lösung, die Fast Sneakers mithilfe von Kinesis Data Streams, AWS Glue und DynamoDB Streams erstellt hat. Durch die Nutzung dieser Services steht dem Unternehmen eine elastische und zuverlässige Lösung zur Verfügung, ohne dass es Zeit für die Einrichtung und Wartung der unterstützenden Infrastruktur aufwenden muss. Das Unternehmen kann seine Zeit auf das verwenden, was ihm einen Mehrwert bringt, indem es sich auf einen ETL-Streaming-Auftrag (Extract, Transform, Load) und sein Machine-Learning-Modell konzentriert.
Zum besseren Verständnis der Architektur und der Technologien, die in seinem Workload verwendet werden, werden im Folgenden einige Einzelheiten zu den verwendeten Services aufgeführt.
AWS Glue- und AWS Glue-Streaming
AWS Glue
Mithilfe von AWS Glue können Sie eine Verbraucheranwendung mit einem AWS Glue-Streaming-ETL-Auftrag erstellen. So können Sie Apache Spark und andere Spark-basierte Module verwenden, um Ihre Ereignisdaten zu nutzen und zu verarbeiten. Der nächste Abschnitt dieses Dokuments geht näher auf dieses Szenario ein.
AWS Glue Data Catalog
Der AWS Glue Data Catalog enthält Verweise auf Daten, die als Quellen und Ziele für Ihre ETL-Aufträge in AWS Glue verwendet werden. Der AWS Glue Data Catalog ist ein Index für die Speicherort-, Schema- und Laufzeitmetriken Ihrer Daten. Sie können die Informationen im Datenkatalog verwenden, um Ihre ETL-Aufträge zu erstellen und zu überwachen. Informationen im Datenkatalog werden als Metadatentabellen gespeichert, wobei jede Tabelle einen einzigen Datenspeicher angibt. Durch die Einrichtung eines Crawlers können Sie zahlreiche Arten von Datenspeichern, einschließlich DynamoDB, S3 und mit Java Database Connectivity (JDBC) verbundene Speicher, automatisch bewerten, Metadaten und Schemata extrahieren und anschließend Tabellendefinitionen im AWS Glue Data Catalog erstellen.
Um mit Amazon Kinesis Data Streams in AWS Glue-Streaming-ETL-Aufträgen zu arbeiten, empfiehlt es sich, den Stream in einer Tabelle in einer AWS Glue Data Catalog-Datenbank zu definieren. Sie definieren eine Stream-bezogene Tabelle mit dem Kinesis-Stream, einem der vielen unterstützten Formate (CSV, JSON, ORC, Parquet, Avro oder ein Kundenformat mit Grok). Sie können ein Schema manuell eingeben oder diesen Schritt Ihrem AWS Glue-Auftrag überlassen, um ihn während der Laufzeit des Auftrags festzulegen.
AWS Glue-Streaming-ETL-Auftrag
AWS Glue
DynamicFrames sind verteilte Tabellen, die verschachtelte Daten wie Strukturen und Arrays unterstützen. Jeder Datensatz ist selbstbeschreibend und wurde auf Schema-Flexibilität mit halbstrukturierten Daten ausgelegt. Ein Datensatz in einem DynamicFrame enthält sowohl Daten als auch das Schema, das die Daten beschreibt. Sowohl Apache-Spark-DataFrames als auch DynamicFrames werden in Ihren ETL-Skripten unterstützt, und Sie können sie hin und her konvertieren. DynamicFrames bieten eine Reihe von erweiterten Transformationen für die Datenbereinigung und ETL.
Durch die Verwendung von Spark Streaming in Ihrem AWS Glue-Auftrag können Sie Streaming-ETL-Aufträge erstellen, die kontinuierlich ausgeführt werden, und Daten aus Streaming-Quellen wie Amazon Kinesis Data Streams, Apache Kafka und Amazon MSK nutzen. Die Aufträge können die Daten bereinigen, zusammenführen und transformieren und dann die Ergebnisse in Speicher wie Amazon-S3-, Amazon-DynamoDB- oder JDBC-Datenspeicher laden.
AWS Glue verarbeitet und schreibt standardmäßig Daten in 100-Sekunden-Fenstern. Dadurch können Daten effizient verarbeitet und Aggregationen für Daten ausgeführt werden, die später als erwartet eintreffen. Sie können die Fenstergröße konfigurieren, indem Sie sie an die Reaktionsgeschwindigkeit im Vergleich zur Genauigkeit Ihrer Aggregation anpassen. AWS Glue-Streaming-Aufträge verwenden Prüfpunkte, um die Daten zu verfolgen, die aus dem Kinesis-Datenstrom gelesen wurden. Eine Anleitung zum Erstellen eines Streaming-ETL-Jobs in AWS Glue finden Sie unter Hinzufügen von Streaming-ETL-Aufträgen in AWS Glue.
Amazon DynamoDB
Amazon DynamoDB
Erfassung von Datenänderungen für DynamoDB-Streams
Ein DynamoDB-Stream ist ein strukturierter Informationsfluss zu Elementänderungen in einer DynamoDB-Tabelle. Wenn Sie den Stream für eine Tabelle aktivieren, werden von DynamoDB Informationen über jede Änderung an den Datenelementen in der Tabelle erfasst. DynamoDB wird auf AWS Lambda ausgeführt, so dass Sie Auslöser erstellen können – Codeelemente, die auf Ereignisse in DynamoDB-Streams automatisch reagieren. Mit Auslösern können Sie Anwendungen entwickeln, die auf Datenänderungen in DynamoDB-Tabellen reagieren.
Wenn ein Stream für eine Tabelle aktiviert ist, können Sie den Stream-Amazon-Ressourcennamen (ARN) mit einer Lambda-Funktion verknüpfen, die Sie schreiben. Sobald ein Element in der Tabelle geändert wurde, erscheint ein neuer Datensatz im Stream der Tabelle. AWS Lambda fragt den Stream ab und ruft die Lambda-Funktion bei Erkennung neuer Stream-Datensätze synchron auf.
Service-Endpunkte von Amazon SageMaker und Amazon SageMaker
Amazon SageMaker
Mithilfe des AWS SDK können Sie einen SageMaker-Endpunkt aufrufen, der Informationen zum Inhaltstyp zusammen mit dem Inhalt übergibt, und dann Echtzeit-Vorhersagen basierend auf den übergebenen Daten erhalten. Auf diese Weise können Sie die Gestaltung und Entwicklung Ihrer ML-Modelle von dem Code trennen, mit dem Aktionen für die abgeleiteten Ergebnisse ausgeführt werden.
So können Ihre Datenwissenschaftler ihr Hauptaugenmerk auf ML richten, während sich die Entwickler, die das ML-Modell verwenden, darauf konzentrieren können, wie sie es in ihrem Code verwenden. Weitere Informationen über das Aufrufen eines Endpunkts in SageMaker finden Sie in der Referenz zum Aufrufen eines Endpunkts in der Amazon-SageMaker-API.
Ableiten von Datenerkenntnissen in Echtzeit
Das vorherige Architekturdiagramm zeigt, dass die bestehende Webanwendung von Fast Sneakers einen Kinesis-Datenstrom mit Clickstream-Ereignissen hinzugefügt hat, der Daten zum Datenverkehr und zu den Ereignissen von der Website bereitstellt. Der Produktkatalog, der Informationen wie Kategorisierung, Produktattribute und Preise enthält, und die Bestelltabelle, die Daten wie bestellte Artikel, Fakturierung, Versand usw. enthält, sind separate DynamoDB-Tabellen. Die Metadaten und Schemata der Datenstromquelle und der entsprechenden DynamoDB-Tabellen sind in AWS Glue Data Catalog definiert und werden vom AWS Glue-Streaming-ETL-Auftrag verwendet.
Durch die Verwendung von Apache Spark, Spark Streaming und DynamicFrames in seinem AWS Glue-Streaming-ETL-Auftrag ist das Unternehmen Fast Sneakers in der Lage, Daten aus beiden Datenströmen zu extrahieren und zu transformieren und Daten aus den Produkt- und Auftragstabellen zusammenzuführen. Mit den hydratisierten Daten aus der Transformation werden die Datensätze, aus denen Inferenzergebnisse abgerufen werden sollen, an eine DynamoDB-Tabelle übermittelt.
Der DynamoDB-Stream für die Tabelle löst für jeden neu geschriebenen Datensatz eine Lambda-Funktion aus. Die Lambda-Funktion übermittelt die zuvor umgewandelten Datensätze an einen SageMaker-Endpunkt mit dem AWS SDK, um abzuleiten, ob und welche Preisanpassungen für ein Produkt erforderlich sind. Wenn das ML-Modell feststellt, dass eine Anpassung des Preises erforderlich ist, schreibt die Lambda-Funktion die Preisänderung für das Produkt in die DynamoDB-Tabelle des Katalogs.
Übersicht
Amazon Kinesis Data Streams vereinfacht das Erfassen, Verarbeiten und Analysieren von Echtzeit-Streaming-Daten, damit Sie zeitnahe Einblicke erhalten und schnell auf neue Informationen reagieren können. In Kombination mit dem Serverless-Datenintegrationsdienst von AWS Glue können Sie Echtzeit-Ereignis-Streaming-Anwendungen erstellen, die Daten für ML vorbereiten und kombinieren.
Da sowohl Kinesis Data Streams als auch die AWS Glue-Services vollständig verwaltet werden, nimmt AWS Ihnen den undifferenzierten Arbeitsaufwand der Verwaltung der Infrastruktur für Ihre Big-Data-Plattform ab, sodass Sie sich auf das Gewinnen von Erkenntnissen auf der Grundlage Ihrer Daten konzentrieren können.
Das Unternehmen Fast Sneakers kann die Echtzeit-Ereignisverarbeitung und ML nutzen, um seine Website in die Lage zu versetzen, vollautomatische Preisanpassungen in Echtzeit vorzunehmen, um seinen Produktbestand zu maximieren. Dies bringt dem Unternehmen den größten Nutzen und vermeidet gleichzeitig die Notwendigkeit, eine Big-Data-Plattform zu erstellen und zu pflegen.