Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting
Streaming-Aufnahme in eine materialisierte Ansicht
In diesem Thema wird beschrieben, wie Sie materialisierte Ansichten für den schnellen Zugriff auf Streaming-Daten verwenden.
Die Streaming-Erfassung ermöglicht eine Datenerfassung mit geringer Latenz und hoher Geschwindigkeit aus Amazon Kinesis Data Streams
Wie Daten von einem Streaming-Service zu Redshift fließen
Dies hilft zu verstehen, wie die Streaming-Aufnahme funktioniert, und welche Datenbankobjekte dabei verwendet werden. Daten werden direkt von einem Datenstrom-Anbieter an einen von Amazon Redshift bereitgestellten Cluster oder eine Arbeitsgruppe von Amazon Redshift Serverless weitergeleitet. Es gibt keinen temporären Landebereich, wie einen Amazon-S3-Bucket. Der bereitgestellte Cluster oder die Arbeitsgruppe ist der Verbraucher des Streams. In der Redshift-Datenbank landen die aus dem Stream gelesenen Daten in einer materialisierten Ansicht. Die Daten werden verarbeitet, sobald sie ankommen. Beispielsweise können JSON-Werte mit bekanntem SQL verbraucht und den Datenspalten der materialisierten Ansicht zugeordnet werden. Wenn die materialisierte Ansicht aktualisiert wird, verwendet Redshift Daten von zugewiesenen Kinesis-Daten-Shards oder Kafka-Partitionen, bis die Ansicht auf den neuesten Stand mit dem Stream gebracht wird.
Die Anwendungsfälle für die Streaming-Erfassung in Amazon Redshift umfassen die Arbeit mit Daten, die kontinuierlich generiert werden und innerhalb eines kurzen Zeitraums (oder mit geringer Latenz) nach ihrer Generierung verarbeitet werden müssen. Dies wird als Analytik in nahezu Echtzeit bezeichnet. Die Datenquellen können IT-Geräte, Systemtelemetriegeräte oder Clickstream-Daten von einer ausgelasteten Website oder Anwendung beinhalten.
Bewährte Methoden für die Verbesserung der Leistung.
Wenn Sie die Streaming-Aufnahme konfigurieren, gibt es Optionen, wie Sie die eingehenden Daten analysieren können. Zu den Methoden können die Ausführung von Geschäftslogik oder die Formatierung bei Ankunft der Daten gehören. Nachfolgend finden Sie einige bewährte Methoden für die Vermeidung von Fehlern oder Datenverlusten. Diese wurden aus internen Tests abgeleitet und halfen Kunden bei der Behebung von Problemen mit Konfiguration und Analyse.
Extrahieren von Werten aus gestreamten Daten – Wenn Sie die Funktion JSON_EXTRACT_PATH_TEXT in der Definition Ihrer materialisierten Ansicht verwenden, um gestreamtes JSON zu analysieren oder aufzuteilen, kann dies Leistung und Latenz erheblich beeinträchtigen. Zur Erläuterung: Für jede mit JSON_EXTRACT_PATH_TEXT extrahierte Spalte wird das eingehende JSON erneut analysiert. Danach werden Datentypkonvertierung, Filterung und Berechnungen der Geschäftslogik durchgeführt. Dies bedeutet: Wenn Sie beispielsweise 10 Spalten aus JSON-Daten extrahieren, wird jeder JSON-Datensatz zehnmal analysiert, was zusätzliche Logik beinhaltet. Dies führt zu einer höheren Latenz bei der Aufnahme. Ein alternativer Ansatz, den wir empfehlen, besteht darin, die Funktion JSON_PARSE zu verwenden, um JSON-Datensätze in den SUPER-Datentyp von Redshift zu konvertieren. Nachdem die gestreamten Daten in der materialisierten Ansicht gelandet sind, verwenden Sie PartiQL, um einzelne Zeichenketten aus der SUPER-Darstellung der JSON-Daten zu extrahieren. Weitere Informationen finden Sie unter Abfragen von halbstrukturierten Daten.
Beachten Sie außerdem, dass für JSON_EXTRACT_PATH_TEXT eine maximale Datengröße von 64 KB gilt. Wenn also ein JSON-Datensatz größer als 64 KB ist, führt die Verarbeitung mit JSON_EXTRACT_PATH_TEXT zu einem Fehler.
Zuordnen eines Amazon Kinesis Data Streams-Streams oder Amazon-MSK-Themas zu mehreren materialisierten Ansichten – Es wird nicht empfohlen, mehrere materialisierte Ansichten zu erstellen, um Daten aus einem einzelnen Stream oder Thema aufzunehmen. Dies liegt daran, dass jede materialisierte Ansicht einen Verbraucher für jeden Shard im Kinesis Data Streams-Stream oder in der Partition im Kafka-Thema erstellt. Dies kann dazu führen, dass der Durchsatz des Streams oder Themas gedrosselt oder überschritten wird. Dies kann auch zu höheren Kosten führen, da Sie dieselben Daten mehrfach aufnehmen. Wenn Sie die Streaming-Aufnahme konfigurieren, empfehlen wir, für jeden Stream oder jedes Thema eine materialisierte Ansicht zu erstellen.
Wenn Ihr Anwendungsfall erfordert, dass Sie Daten aus einem KDS-Stream oder einem MSK-Thema in mehrere materialisierte Ansichten aufnehmen, lesen Sie vorher den AWSBig Data-Blog
, insbesondere Best Practices zur Analytik-Implementierung nahezu in Echtzeit mittels Amazon Redshift Streaming Ingestion mit Amazon MSK .
Verhalten und Datentypen bei der Streaming-Aufnahme
In der folgenden Tabelle werden technische Verhaltensdetails und Größenbeschränkungen für verschiedene Datentypen beschrieben. Wir empfehlen, sich mit diesen vertraut zu machen, bevor Sie eine materialisierte Ansicht für die Streaming-Aufnahme konfigurieren.
| Feature oder Verhalten | Beschreibung |
|---|---|
| Längenbegrenzung für Kafka-Themen | Die Verwendung von Kafka-Themen, deren Name mehr als 128 Zeichen umfasst (ohne Anführungszeichen) ist nicht möglich. Weitere Informationen finden Sie unter Namen und Kennungen. |
| Inkrementelle Aktualisierungen und JOINS in einer materialisierten Ansicht | Die materialisierte Ansicht muss inkrementell wartbar sein. Eine vollständige Neuberechnung ist für Kinesis oder Amazon MSK nicht möglich, da der Stream- oder Themenverlauf standardmäßig nicht über 24 Stunden bzw. 7 Tage hinaus beibehalten wird. Sie können längere Datenaufbewahrungsfristen in Kinesis oder Amazon MSK festlegen. Dies kann jedoch zu einem größeren Verwaltungsaufwand und höheren Kosten führen. Darüber hinaus werden JOINs derzeit in materialisierten Ansichten, die in einem Kinesis-Stream oder einem Amazon-MSK-Thema erstellt wurden, nicht unterstützt. Nachdem Sie eine materialisierte Ansicht in Ihrem Stream oder Thema erstellt haben, können Sie eine andere materialisierte Ansicht erstellen, um Ihre materialisierte Streaming-Ansicht mit anderen materialisierten Ansichten, Tabellen oder Ansichten zu verbinden. Weitere Informationen finden Sie unter REFRESH MATERIALIZED VIEW. |
| Analyse von Datensätzen | Die Streaming-Erfassung von Amazon Redshift unterstützt die Analyse von Datensätzen, die von der Kinesis Producer Library (KPL-Schlüsselkonzepte – Aggregation) aggregiert wurden. Die aggregierten Datensätze werden erfasst, werden jedoch als Pufferdaten für das Binärprotokoll verwendet. (Weitere Informationen finden Sie unter Protokollpuffer |
| Doppelte Werte in Kafka-Headern | Der Streaming-Verbraucherclient von Amazon Redshift für Kafka-Themen, die von Amazon MSK, Confluent oder Apache Kafka stammen, unterstützt keine doppelten Werte in den Headern von Kafka-Themen. |
| Dekomprimierung |
|
| Maximale Datensatzgröße | Die maximale Größe jedes Datensatzes, den Amazon Redshift von einem Streaming-Service aufnehmen kann, beträgt 16.777.216 Byte (16 MiB). Dies ist die maximale Größe, die vom VARBYTE-Datentyp in Amazon Redshift unterstützt wird. Kinesis unterstützt jedoch nur eine maximale Datensatzgröße von 1.048.576 Byte (1 MiB). Amazon MSK unterstützt eine maximale Datensatzgröße von 16.777.216 Byte (16 MiB). Daher setzen materialisierte Streaming-Ansichten von Amazon Redshift, die auf einem Kinesis-Datenstrom erstellt wurden, standardmäßig die Größe der VARBYTE-Datentypspalte auf 1.048.576 Byte (1 MiB), und materialisierte Streaming-Ansichten von Amazon Redshift, die auf einem Amazon MSK-Thema erstellt wurden, legen die Größe der VARBYTE-Datenspalte auf 16.777.216 Byte (16 MiB) fest. Weitere Informationen zu Größenbeschränkungen für Kinesis finden Sie unter Kontingente und Limits im Entwicklerhandbuch zu Amazon Kinesis Data Streams. |
| Fehlerdatensätze | Immer wenn ein Datensatz nicht in Redshift aufgenommen werden kann, da die Daten das Maximum überschreiten, wird der betreffende Datensatz übersprungen. Die materialisierte Ansicht kann auch in diesem Fall erfolgreich aktualisiert werden und ein Segment jedes Fehlerdatensatzes wird in die Systemtabelle SYS_STREAM_SCAN_ERRORS geschrieben. Fehler, die sich aus der Geschäftslogik ergeben, wie beispielsweise Fehler in einer Berechnung oder Fehler infolge einer Typkonvertierung, werden nicht übersprungen. Bevor Sie der Definition Ihrer materialisierten Ansicht Logik hinzufügen, sollten Sie diese sorgfältig testen. |
| Private Konnektivität mit Amazon MSK Multi-VPC | Private Konnektivität mit Amazon MSK Multi-VPC wird derzeit für die Redshift-Streaming-Aufnahme nicht unterstützt. Alternativ können Sie VPC-Peering verwenden, um VPCs zu verbinden, oder AWS Transit Gateway, um VPCs und On-Premises-Netzwerke über einen zentralen Hub zu verbinden. Mit beiden kann Redshift mit einem Amazon-MSK-Cluster oder mit Amazon MSK Serverless in einer anderen VPC kommunizieren. |
| Nutzung und Aktivierung der automatischen Aktualisierung | Abfragen zur automatischen Aktualisierung für eine oder mehrere materialisierte Ansichten werden wie alle anderen Benutzer-Workloads behandelt. Bei der automatischen Aktualisierung werden Daten bei ihrer Ankunft aus dem Stream geladen. Die automatische Aktualisierung kann für eine materialisierte Ansicht, die für die Streaming-Erfassung erstellt wurde, explizit aktiviert werden. Geben Sie hierfür |
| Streaming-Aufnahme und Amazon Redshift Serverless | Die für die Streaming-Erfassung von Amazon Redshift in einem bereitgestellten Cluster geltenden Einrichtungs- und Konfigurationsanweisungen gelten auch für die Streaming-Erfassung in Amazon Redshift Serverless. Es ist wichtig, die erforderliche Anzahl an RPUs anzugeben, um die Streaming-Erfassung mit automatischer Aktualisierung und andere Workloads zu unterstützen. Weitere Informationen finden Sie unter Abrechnung für Amazon Redshift Serverless. |
| Amazon-Redshift-Knoten in einer anderen Availability Zone als der Amazon-MSK-Cluster | Wenn Sie die Streaming-Aufnahme konfigurieren, versucht Amazon Redshift, eine Verbindung zu einem Amazon-MSK-Cluster in derselben Availability Zone herzustellen, sofern Rack-Sensibilität für Amazon MSK aktiviert ist. Wenn sich alle Ihre Knoten in anderen Availability Zones als Ihr Amazon-Redshift-Cluster befinden, können Kosten für die Datenübertragung zwischen Availability Zones anfallen. Um dies zu vermeiden, sollten Sie mindestens einen Broker-Cluster-Knoten von Amazon MSK in derselben AZ, in der sich auch Ihr Amazon-Redshift-Cluster befindet, beibehalten. |
| Aktualisieren des Startorts | Nachdem Sie eine materialisierte Ansicht erstellt haben, beginnt die erste Aktualisierung beim |
| Datenformate | Unterstützte Datenformate sind auf diejenigen beschränkt, die aus |
| Anfügen von Datensätzen an eine Tabelle | Sie können Für
|
| Ausführen von TRUNCATE oder DELETE | Sie können Datensätze aus einer materialisierten Ansicht entfernen, die für die Streaming-Aufnahme benutzt wird, indem Sie Folgendes verwenden:
Für
|
| IDs, die nicht in Kleinbuchstaben gehalten sind | Beim Erstellen von materialisierten Streaming-Ansichten auf Amazon Managed Streaming für Apache-Kafka-Themen oder Kinesis Data Streams, die IDs enthalten, die nicht in Kleinbuchstaben gehalten sind, schlagen automatische Aktualisierungen möglicherweise fehl. Gehen Sie wie folgt vor, um dieses Problem zu lösen:
AnmerkungDie Einstellung Weitere Informationen zu diesen die Groß- und Kleinschreibung berücksichtigenden IDs finden Sie unter enable_case_sensitive_identifier. |
| Idempotenz |
Amazon Redshift garantiert, dass jeder Datensatz genau einmal verarbeitet wird, wenn Daten aus Streaming-Quellen aufgenommen werden. Diese Garantie gilt für zwei Arten von Quellen: Amazon Kinesis (mit Stream-, Shard- und Sequenznummer-IDs) und Apache Kafka (mit Topic-, Partitions- und Offset-IDs), einschließlich Amazon Managed Streaming für Apache Kafka (Amazon MSK) und Confluent Cloud. |