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 Sie OnErrorOption auf OnErrorOption.CONTINUE und überprüfen Sie manuell den Rückgabewert von insertRows auf mögliche Erfassungsfehler. Dieser Ansatz führt derzeit zu einer besseren Performance als der Rückgriff auf Ausnahmen, die bei Verwendung von OnErrorOption.ABORT ausgelöst werden.

  • Wenn Sie mehrere Zeilen laden, ist die Verwendung von insertRows leistungsfähiger und kostengünstiger als das mehrmalige Aufrufen von insertRow, 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