Best Practices für Snowpipe Streaming¶
Kostenoptimierung¶
Es empfiehlt sich, die API mit weniger Clients aufzurufen, die mehr Daten pro Sekunde schreiben. Aggregieren Sie Daten aus mehreren Quellen wie IoT-Geräten oder Sensoren mit einer Java- oder Scala-Anwendung, und rufen Sie dann die API auf, um Daten mithilfe des Snowflake Ingest SDK bei höheren Datenflussraten zu laden. Die API aggregiert effizient Daten über mehrere Zieltabellen in einem Konto.
Die Nutzung derselben Tabellen sowohl für die Batch- als auch für die Streaming-Erfassung kann aufgrund von vorweggenommenen Dateimigrationsoperationen auch zu geringeren Snowpipe Streaming-Computekosten führen.
Performance-Empfehlungen¶
Für eine optimale Performance bei Bereitstellungen mit hohem Durchsatz empfehlen wir die folgenden Maßnahmen:
Übergeben Sie Werte für TIME-, DATE- und alle TIMESTAMP-Spalten mit einem der unterstützten Typen aus dem
java.time
-Paket.Wenn Sie einen Kanal mit
OpenChannelRequest.builder
erstellen, setzen SieOnErrorOption
aufOnErrorOption.CONTINUE
und überprüfen Sie manuell den Rückgabewert voninsertRows
auf mögliche Erfassungsfehler. Dieser Ansatz führt derzeit zu einer besseren Performance als der Rückgriff auf Ausnahmen, die bei Verwendung vonOnErrorOption.ABORT
ausgelöst werden.Wenn Sie mehrere Zeilen laden, ist die Verwendung von
insertRows
leistungsfähiger und kostengünstiger als das mehrmalige Aufrufen voninsertRow
, da weniger Zeit für Sperren aufgewendet wird.Wenn Sie den Standard-Protokolliergrad auf DEBUG setzen, müssen Sie sicherstellen, dass die folgenden Logger weiterhin mit INFO protokollieren. Dies ist erforderlich, da die Ausgabe von DEBUG sehr ausführlich ist, was erhebliche Auswirkungen auf die Performance haben kann.
net.snowflake.ingest.internal.apache.parquet
org.apache.parquet