Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Überlegungen und Einschränkungen
Anmerkung
Firehose unterstützt Apache Iceberg Tables als Ziel in allen Regionen AWS-Regionenaußer China und im asiatisch-pazifischen Raum (Malaysia). AWS GovCloud (US) Regions
Die Firehose-Unterstützung für Apache Iceberg-Tabellen hat die folgenden Überlegungen und Einschränkungen.
-
Durchsatz — Wenn Sie Direct PUT als Quelle für die Bereitstellung von Daten an Apache Iceberg-Tabellen verwenden, beträgt der maximale Durchsatz pro Stream 5 MiB/second in den Regionen USA Ost (Nord-Virginia), USA West (Oregon) und Europa (Irland) und 1 MiB/second in allen anderen AWS-Regionen Regionen. Wenn Sie Daten ohne Aktualisierungen und Löschungen in Iceberg-Tabellen einfügen und einen höheren Durchsatz für Ihren Stream wünschen, können Sie das Formular Firehose Limits verwenden, um eine Erhöhung des Durchsatzlimits
zu beantragen. Sie können die
AppendOnly
Markierung auch auf setzen,True
wenn Sie nur Daten einfügen und keine Aktualisierungen und Löschungen durchführen möchten. Wenn Sie dieAppendOnly
Flagge auf setzenTrue
, passt sich Firehose automatisch Ihrem Durchsatz an. Derzeit können Sie dieses Flag nur bei der CreateDeliveryStreamAPI-Operation setzen.Wenn bei einem Direct PUT-Stream eine Drosselung aufgrund höherer Datenaufnahmemengen auftritt, die die Durchsatzkapazität eines Firehose-Streams überschreiten, erhöht Firehose automatisch die Durchsatzgrenze des Streams, bis die Drosselung eingedämmt ist. Je nach erhöhtem Durchsatz und Drosselung kann es länger dauern, bis Firehose den Durchsatz eines Streams auf das gewünschte Niveau erhöht. Aus diesem Grund sollten Sie die fehlgeschlagenen Datenaufnahmesätze erneut versuchen. Wenn Sie erwarten, dass das Datenvolumen bei plötzlichen großen Datenstößen ansteigt, oder wenn Ihr neuer Stream einen höheren Durchsatz als den standardmäßigen Durchsatzgrenzwert benötigt, fordern Sie eine Erhöhung des Durchsatzlimits an.
-
S3-Transaktion pro Sekunde (TPS) — Um die S3-Leistung zu optimieren, empfehlen wir, den Quelldatensatz mit einem geeigneten Partitionsschlüssel zu partitionieren, wenn Sie Kinesis Data Streams oder Amazon MSK als Quelle verwenden. Auf diese Weise werden Datensätze, die an dieselbe Iceberg-Tabelle weitergeleitet werden, einer oder mehreren Quellpartitionen zugeordnet, die als Shards bezeichnet werden. Wenn möglich, verteilen Sie Datensätze, die zu verschiedenen Ziel-Iceberg-Tabellen gehören, auf verschiedene. partitions/shards, so that you can use all the aggregate throughput available across all the partitions/shards of the source topic/stream
-
Spalten — Für Spaltennamen und Werte verwendet Firehose nur die erste Ebene von Knoten in einem mehrstufigen verschachtelten JSON. Firehose wählt beispielsweise die Knoten aus, die in der ersten Ebene verfügbar sind, einschließlich des Positionsfeldes. Die Spaltennamen und die Datentypen der Quelldaten müssen exakt mit denen der Zieltabellen übereinstimmen, damit Firehose erfolgreich liefern kann. In diesem Fall erwartet Firehose, dass Sie in Ihren Iceberg-Tabellen entweder eine Spalte vom Datentyp Struct oder Map haben, die dem Positionsfeld entspricht. Firehose unterstützt 16 Verschachtelungsebenen. Es folgt ein Beispiel für ein verschachteltes JSON.
{ "version":"2016-04-01", "deviceId":"<solution_unique_device_id>", "sensorId":"<device_sensor_id>", "timestamp":"2024-01-11T20:42:45.000Z", "value":"<actual_value>", "position":{ "x":143.595901, "y":476.399628, "z":0.24234876 } }
Wenn die Spaltennamen oder Datentypen nicht übereinstimmen, gibt Firehose einen Fehler aus und übermittelt Daten an den S3-Fehler-Bucket. Wenn alle Spaltennamen und Datentypen in den Apache Iceberg-Tabellen übereinstimmen, der Quelldatensatz jedoch ein zusätzliches Feld enthält, überspringt Firehose das neue Feld.
-
Ein JSON-Objekt pro Datensatz — Sie können nur ein JSON-Objekt in einem Firehose senden. Wenn Sie mehrere JSON-Objekte innerhalb eines Datensatzes aggregieren und senden, gibt Firehose einen Fehler aus und übermittelt Daten an den S3-Fehler-Bucket. Wenn Sie Datensätze mit KPL aggregieren und Daten mit Amazon Kinesis Data Streams als Quelle in Firehose aufnehmen, deaggregiert Firehose automatisch und verwendet ein JSON-Objekt pro Datensatz.
-
Komprimierung und Speicheroptimierung — Jedes Mal, wenn Sie mit Firehose in Iceberg-Tabellen schreiben, werden Snapshots, Datendateien und gelöschte Dateien festgeschrieben und generiert. Viele Datendateien erhöhen den Metadaten-Overhead und beeinträchtigen die Leseleistung. Um eine effiziente Abfrageleistung zu erzielen, sollten Sie eine Lösung in Betracht ziehen, bei der in regelmäßigen Abständen kleine Datendateien in weniger größere Datendateien umgeschrieben werden. Dieser Vorgang wird als Komprimierung bezeichnet. AWS Glue Data Catalog unterstützt die automatische Komprimierung Ihrer Apache Iceberg-Tabellen. Weitere Informationen finden Sie unter Verdichtungsmanagement im AWS Glue-Benutzerhandbuch. Weitere Informationen finden Sie unter Automatische Komprimierung von Apache Iceberg-Tabellen
. Alternativ können Sie den Befehl Athena Optimize ausführen, um die Komprimierung manuell durchzuführen. Weitere Informationen zum Befehl Optimize finden Sie unter Athena Optimize. Neben der Komprimierung von Datendateien können Sie auch den Speicherverbrauch mit der VACUUM-Anweisung optimieren, die Tabellenverwaltung für Apache Iceberg-Tabellen durchführt, z. B. das Ablaufen von Snapshots und das Entfernen verwaister Dateien. Alternativ können Sie AWS Glue Data Catalog damit auch die verwaltete Tabellenoptimierung von Apache Iceberg-Tabellen unterstützen, indem die Datendateien, verwaisten Dateien und abgelaufenen Snapshots, die nicht mehr benötigt werden, automatisch entfernt werden. Weitere Informationen finden Sie in diesem Blogbeitrag zur Speicheroptimierung von Apache Iceberg-Tabellen
. -
Wir unterstützen die Amazon MSK Serverless-Quelle für Apache Iceberg Tables nicht als Ziel.
-
Für die Lieferung an Tabellen in Amazon S3 S3-Tabellen-Buckets unterstützt Firehose nur den AWS Glue Standardkatalog.
-
Für einen Aktualisierungsvorgang legt Firehose eine Löschdatei gefolgt von einem Einfügevorgang ab. Für das Ablegen gelöschter Dateien fallen Gebühren für Amazon S3 an.
-
Firehose empfiehlt nicht, mehrere Firehose-Streams zu verwenden, um Daten in dieselbe Apache Iceberg-Tabelle zu schreiben. Dies liegt daran, dass Apache Iceberg auf Optimistic Concurrency
Control (OCC) angewiesen ist. Wenn mehrere Firehose-Streams versuchen, gleichzeitig in eine einzelne Iceberg-Tabelle zu schreiben, kann nur ein Stream die Daten zu einem bestimmten Zeitpunkt erfolgreich festschreiben. Die anderen Streams, bei denen der Commit fehlschlägt, ziehen sich zurück und wiederholen den Commit-Vorgang, bis die konfigurierte Wiederholungsdauer abgelaufen ist. Sobald die Wiederholungsdauer abgelaufen ist, werden die Daten und die Schlüssel zum Löschen von Dateien (Amazon S3 S3-Pfade) an das konfigurierte Amazon S3 S3-Fehlerpräfix gesendet. -
Die aktuelle Version der Iceberg Library, die Firehose unterstützt, ist Version 1.5.2.
-
Um verschlüsselte Daten an Amazon S3 S3-Tabellen zu liefern, sollten Sie AWS Key Management Service Parameter in Amazon S3 S3-Tabellen und nicht in der Firehose-Konfiguration konfigurieren. Wenn Sie in Firehose AWS Key Management Service Parameter für die Übertragung verschlüsselter Daten an Amazon S3 S3-Tabellen konfigurieren, kann Firehose diese Parameter nicht zum Verschlüsseln verwenden. Weitere Informationen finden Sie unter Serverseitige Verschlüsselung mit Schlüsseln verwenden. AWS KMS
-
Firehose-Streams unterstützen nur die Bereitstellung an Datenbanken und Tabellen, die über die Iceberg-API erstellt wurden. GlueCatalog Die Lieferung an Datenbanken und Tabellen, die mit dem Glue SDK erstellt wurden, wird nicht unterstützt. Beachten Sie, dass ein Bindestrich (
-
) kein unterstütztes Zeichen für die Datenbank und den Tabellennamen in der Iceberg-Bibliothek ist. Weitere Informationen finden Sie in der Glue-Datenbank-Regexund der Glue-Tabellen-Regex, die von der Iceberg-Bibliothek unterstützt werden.