Snowpark Library for Scala and Java-Versionshinweise 2022

Dieser Artikel enthält die Versionshinweise für die Snowpark-Bibliothek für Scala und die Snowpark-Bibliothek für Java, einschließlich der folgenden, sofern zutreffend:

  • Verhaltensänderungen

  • Neue Features

  • Fehlerkorrekturen für Kunden

Snowflake verwendet semantische Versionierung für Snowpark Library for Scala and Java-Aktualisierungen.

Version 1.6.2 (26. Oktober 2022)

Kompatibles Snowflake-Release: 6.35.x

Verbesserungen

  • Es wurden interne Verbesserungen für in Java oder Scala geschriebene gespeicherte Prozeduren vorgenommen.

Version 1.6.1 (30. September 2022)

Kompatibles Snowflake-Release: 6.31.x

Diese Version weist ein bekanntes Problem auf, das die Erstellung von temporären Objekten beeinträchtigen kann. Verwenden Sie stattdessen 1.6.2.

Verbesserungen

  • Es wurden interne Verbesserungen für in Java oder Scala geschriebene gespeicherte Prozeduren vorgenommen.

Version 1.6.0 (12. August 2022)

Kompatibles Snowflake-Release: 6.27.x

Verbesserungen

  • Es wurden interne Verbesserungen an UDTFs vorgenommen.

Version 1.5.0 (1. Juli 2022)

Kompatibles Snowflake-Release: 6.22.x

Neue Features

  • Unterstützung für das Schreiben von DataFrames in Dateien in einem Stagingbereich wurde zur Scala-API und zur Java-API hinzugefügt.

Verbesserungen

  • SQL-Abfragen, die von der Snowpark-Client-Bibliothek generiert werden, wurden optimiert.

  • Die Fehlermeldung, die protokolliert wird, wenn die Snowpark-Bibliothek einen Spaltennamen

  • in einem DataFrame auflösen kann, wurde verbessert (z. B. wenn Sie versuchen, auf eine Spalte zuzugreifen, die nicht existiert).

Version 1.4.1 (26. Mai 2022)

Kompatibles Snowflake-Release: 6.17.x

Änderungen

  • Die Versionen von jackson-core und jackson-annotations, von der die Snowpark-Bibliothek abhängt, wurde auf 2.13.2 aktualisiert.

  • Die Version von jackson-databind, von der die Snowpark-Bibliothek abhängt, wurde auf 2.13.2.2 aktualisiert.

  • Die Klassen jackson-core, jackson-databind und jackson-annotations wurden aus der Snowpark-JAR-Datei entfernt.

    Wenn Sie die .tar.gz/.zip-Datei heruntergeladen haben, werden die JAR-Dateien für die Jackson-Klassen jetzt separat im Unterverzeichnis lib/ bereitgestellt (jackson-core-2.13.2.jar, jackson-databind-2.13.2.2.jar und jackson-annotations-2.13.2.jar).

    Wenn Sie die Snowpark-Bibliothek in Ihrer pom.xml-Datei als Abhängigkeit angeben und Sie in Ihrer „pom.xml“-Datei von einer anderen Version der Jackson-Bibliotheken abhängig sein möchten, können Sie die Abhängigkeit von den Jackson-Bibliotheken aus der Snowpark-Bibliotheksabhängigkeit ausschließen.

Version 1.4.0 (28. April 2022)

Kompatibles Snowflake-Release: 6.14.x

Neue Features

  • Die Snowpark-Java-API ist auf AWS und Azure nun allgemein verfügbar.

  • Die API ist auf GCS weiterhin als Vorschau-Feature verfügbar.

  • Die Snowpark Scala-API ist jetzt auch auf Azure allgemein verfügbar.

    Vor diesem Release war die API nur auf AWS allgemein verfügbar. Die API ist auf GCS weiterhin als Vorschau-Feature verfügbar.

  • Java-API zum Erstellen von UDTFs hinzugefügt. Beachten Sie, dass sich dieses Feature in der Vorschau befindet.

  • Neue APIs in Scala und Java zum Hoch- und Herunterladen von Daten aus einem Stagingbereich hinzugefügt (FileOperation.uploadStream and FileOperation.downloadStream).

  • Methode DataFrameWriter.option in Scala und Java hinzugefügt, um festzulegen, wie Werte in Spalten des DataFrame den Spalten der Tabelle zugeordnet werden sollen. Mit der Methode „option“ können Sie festlegen, dass DataFrameWriter den Spaltennamen und nicht die Reihenfolge der Spalten verwenden soll.

Verbesserungen

  • Closure Cleaner in Java-Sitzungen deaktiviert. Der Closure Cleaner funktioniert nur in Scala-Programmen.

  • Array- und Map-Unterstützung der Java-Row-API verbessert.

Version 1.3.0 (18. März 2022)

Kompatibles Snowflake-Release: 6.8.x

Neue Features

Version 1.2.0 (2. März 2022)

Kompatibles Snowflake-Release: 6.5.x

Neue Features

  • Java-API für Snowpark hinzugefügt.

  • Vorschauunterstützung für Erstellen von UDTFs zu Scala-API hinzugefügt.

  • Separate Version der Bibliothek hinzugefügt, die die FIPS-Sicherheitsanforderungen (Federal Information Processing Standard) erfüllt. Sie können diese Bibliothek herunterladen von:

    Um von einer sbt-Build-Datei oder einem Maven-Projekt auf die FIPS-konforme Bibliothek zu verweisen, verwenden Sie snowpark-fips als artifactId.

Version 1.1.0 (4. Februar 2022)

Kompatibles Snowflake-Release: 6.2.x

Unterstützung von Schreiben von gespeicherten Prozeduren in Scala hinzugefügt.

Die API-Referenz für dieses Release finden Sie in der Snowflake-Dokumentation und in einer .zip- oder .tar.gz-Datei im Snowflake Client Repository.

Version 1.0.0 (26. Januar 2022)

Kompatibles Snowflake-Release: 6.1.x

Allgemeine Verfügbarkeit auf AWS. (Snowpark ist auf Azure und GCP noch ein Vorschau-Feature.)

Die API-Referenz für dieses Release finden Sie in einer .zip- oder .tar.gz-Datei im Snowflake Client Repository.

Version 0.12.0 (4. Januar 2022)

Kompatibles Snowflake-Release: 5.45.x

Die API-Referenz für dieses Release finden Sie in einer .zip- oder .tar.gz-Datei im Snowflake Client Repository.

Neue Features

  • Funktion listagg zum functions-Objekt hinzugefügt.

  • Unterstützung von UDFs mit 11 bis 22 Argumenten hinzugefügt.

  • Funktion any_value zur Klasse RelationalGroupedDataFrame hinzugefügt.

Verbesserungen

  • Im generierten Code für UDFs wurde ein statischer Codeblock durch eine Objektinstanzfunktion ersetzt.

  • Fehlermeldungen wurden neu organisiert.

  • Funktion saveAsTable wurde so geändert, dass im Anfügemodus keine neue Tabelle erstellt wird.

  • Funktion callUDF wurde verbessert und unterstützt nun jeden Typ von Argument.

  • Die Bibliothek wurde so geändert, dass das Abfrage-Tag auf Anweisungsebene und nicht mehr auf Sitzungsebene gesetzt wird.

Version 0.11.0 (16. November 2021)

Kompatibles Snowflake-Release: 5.45.x

Die API-Referenz für dieses Release finden Sie in einer .zip- oder .tar.gz-Datei im Snowflake Client Repository.

Neue Features

Verbesserungen

Snowflake-JDBC-Treiber auf 3.13.9 aktualisiert. Fehlermeldung verbessert, die angezeigt wird, wenn keine aktuelle Datenbank zur Verwendung ausgewählt ist.

Version 0.10.1 (27. Oktober 2021)

Kompatibles Snowflake-Release: 5.38.x

Die API-Referenz für dieses Release finden Sie in einer .zip- oder .tar.gz-Datei im Snowflake Client Repository.

Fehlerkorrekturen

  • Problem beim Hochladen von Dateien in einen GCP-Stagingbereich behoben, bei dem das falsche Präfix verwendet wurde.

  • Problem behoben, bei dem eine 403 HTTP -Antwort zurückgegeben wurde, wenn auf eine vorsignierte URL für GCP zugegriffen wurde.

Version 0.10.0 (18. Oktober 2021)

Kompatibles Snowflake-Release: 5.37.x

Die API-Referenz für dieses Release finden Sie in einer .zip- oder .tar.gz-Datei im Snowflake Client Repository.

Neue Features

  • Die neue Methode dropDuplicates wurde der Klasse DataFrame hinzugefügt.

  • Unterstützung von „in“-Ausdrücken zur Klasse „Column“ (mit der Methode in) und zum „functions“-Objekt (mit der Funktion „in“) hinzugefügt.

  • Iterator erweitert, der von DataFrame.toLocalIterator zurückgegeben wird. Dieser unterstützt nun die Schnittstelle Closeable, mit der Sie die „Close“-Methode des Iterators aufrufen können.

  • Unterstützung von neuer Konfigurationseigenschaft snowpark_request_timeout_in_seconds hinzugefügt. Sie können diese in der Konfigurationszuordnung/-datei einstellen, um das Timeout anzupassen, das die Bibliothek beim Hochladen von Abhängigkeiten in einen Stagingbereich verwendet. Standardmäßig hat das Timeout den Wert 86.400 (1 Tag).

Verbesserungen

Verhaltensänderungen

  • APIs, die nur für Java bestimmt sind, wurden aus Scala-API entfernt.

  • Standard-Logger log4j durch SLF4J SimpleLogger ersetzt.

Fehlerkorrekturen

  • Bibliothek wurde so aktualisiert, dass nicht verwendete Anweisungen automatisch geschlossen werden, um den Verbrauch an Arbeitsspeicher zu reduzieren.

  • Spaltenreihenfolge im Ergebnis der Methode DataFrame.withColumns wurde korrigiert.

Version 0.9.0 (20. September 2021)

Kompatibles Snowflake-Release: 5.34.x

Die API-Referenz für dieses Release finden Sie in einer .zip- oder .tar.gz-Datei im Snowflake Client Repository.

Neue Features

Verhaltensänderungen

  • Methoden DataFrame.union() und DataFrame.unionByName() wurden geändert, um UNION anstatt UNION ALL zu verwenden.

Fehlerkorrekturen

  • Fehler SQL compilation error: Missing column specification wurde behoben, der auftreten konnte, wenn die Snowpark-Bibliothek eine temporäre Ansicht erstellte.

Version 0.8.0 (9. August 2021)

Kompatibles Snowflake-Release: 5.30.x

Die API-Referenz für dieses Release finden Sie in einer .zip- oder .tar.gz-Datei im Snowflake Client Repository.

Verbesserungen

  • Einige interne Codes wurden überarbeitet, um einige Abhängigkeiten zu entfernen.

Fehlerkorrekturen

  • Problem mit BigDecimal-Literalen behoben, bei denen die Dezimalstellenzahl (scale) größer als die Gesamtstellenzahl (precision) sein konnte.

  • Problem behoben, das bei der Durchführung mehrerer Mengenoperationen (z. B. Vereinigung, Überschneidung usw.) auftreten konnte.

Version 0.7.0 (23. Juli 2021)

Kompatibles Snowflake-Release: 5.29.x

Die API-Referenz für dieses Release finden Sie in einer .zip- oder .tar.gz-Datei im Snowflake Client Repository.

Neue APIs

  • Die neue Methode Session.close() wurde eingeführt. Rufen Sie diese Methode auf, um die Snowpark-Sitzung zu schließen. Dadurch werden alle aktiven Abfragen abgebrochen und die anschließende Verwendung dieser Sitzung zur Ausführung von Abfragen verhindert.

  • Die neue Klasse „Updatable“ wurde eingeführt. Sie erweitert die Klasse DataFrame und bietet zusätzliche tabellenbezogene Funktionen (z. B. die Möglichkeit, Werte zu aktualisieren und zu löschen).

  • Die Methode Session.table() gibt jetzt statt eines DataFrame-Objekts ein „Updatable“-Objekt zurück.

  • Neue Signaturen für die „Temporary“-Methoden der Klasse UDFRegistration eingeführt. Diese Signaturen haben keinen Parameter für den UDF-Namen, was bedeutet, dass sie zum Registrieren einer anonymen temporären UDF verwendet werden können.

API-Änderungen

  • Wie oben erwähnt, gibt die Methode Session.table() nun ein Objekt Updatable zurück, das das DataFrame-Objekt erweitert.

  • In der Klasse Geography wurde die Unterstützung anderer Formate als GeoJSON entfernt. Ab sofort unterstützt Geography nur das Datenformat GeoJSON.

Verbesserungen

  • Die Methode DataFrame.cacheResult() wurde verbessert, um die Möglichkeit von Fehlern des Typs „Objekt bereits vorhanden“ zu reduzieren.

  • Einige Fehlermeldungen wurden verbessert.

  • Eine neue Protokollmeldung wurde hinzugefügt, die nach dem Anmelden Sitzungsinformationen ausgibt.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem die Methode DataFrame.show() binäre Daten nicht korrekt anzeigte.

  • Ein Fehler wurde behoben, der beim Abrufen der Versionsnummer auftrat.

Version 0.6.0 (14. Juni 2021)

Kompatibles Snowflake-Release: 5.21.x

Vorschau-Release auf AWS

Die API-Referenz für dieses Release finden Sie in einer .zip- oder .tar.gz-Datei im Snowflake Client Repository.

API-Änderungen

Ab diesem Release benötigen die folgenden Methoden in RelationalGroupedDataFrame nun ein Argument:

  • avg

  • max

  • Median (median)

  • min

  • Summe (sum)

Wenn Sie in früheren Releases diese Methoden ohne ein Argument aufriefen, wurden die Methoden auf alle numerischen Spalten im DataFrame angewendet. Beispielsweise war für ein DataFrame df mit den Spalten (a int, b string, c float) der Aufruf von df.groupBy("a").max() äquivalent zum Aufruf von df.groupBy("a").max(col("a"), col("c")).

Ab diesem Release führt der Aufruf dieser Methoden ohne ein Argument zu einer SnowparkClientException.

Version 0.5.0

Neue Features

  • Der Methode DataFrame.show() wurde der Parameter „maxWitdh“ hinzugefügt. Mit diesem Parameter können Sie die Anzahl der Zeichen einstellen, die in der Ausgabe für jede Spalte gedruckt werden.

  • Methode Session.cancelAll() wurde hinzugefügt, mit der Sie alle laufenden Aktionen in dieser Sitzung abbrechen können.

  • Methode DataFrame.toLocalIterator() wurde hinzugefügt, die einen Iterator zurückgibt, mit dem Sie Daten zeilenweise abrufen können. Sie können diese anstelle von DataFrame.collect() verwenden, wenn Sie nicht alle Daten auf einmal in den Arbeitsspeicher laden möchten.

  • Die Methode „median“ wurde zur Klasse RelationalGroupedDataFrame hinzugefügt.

Verbesserungen

  • Die Fehlermeldung, die zurückgegeben wird, wenn ein Bezeichner ungültig ist, wurde verbessert.

  • Die Fehlerprüfung wurde verbessert, um einen Fehler zu melden, wenn kein Datenbank- oder Schemaname angegeben ist.

  • Es wurde eine Leistungsverbesserung beim Einfügen einer großen Anzahl von Werten in eine Tabelle hinzugefügt.

  • Die Bibliothek wurde aktualisiert, um Snowflake-Objektbezeichner (Namen von Tabellen und Ansichten) konsistent zu behandeln. Jetzt unterstützen alle Parameter, die Namen von Tabellen oder Ansichten angeben, die Verwendung von:

    • Kurze Namen (z. B. „table_name“ und „view_name“)

    • Vollqualifizierte Namen (z. B. „database.schema.table_name“)

    • Mehrteilige Bezeichner (z. B. „Seq(„database“, „schema“, „view_name“)“)

  • Es wurde eine Prüfung hinzugefügt, um sicherzustellen, dass die unterstützte Version von Scala verwendet wird. Die Bibliothek meldet einen Fehler, wenn die Scala-Version nicht kompatibel ist.

Fehlerkorrekturen

  • Problem mit der Registrierung von UDFs unter Microsoft Windows wurde behoben.

  • Problem mit der Reihenfolge der Ergebnisse bei Verwendung von DataFrame.sort() mit DataFrame.limit() wurde behoben.

  • Problem mit Session.range() wurde behoben, um eine Nummernsequenz ohne Lücken zu generieren.

Version 0.4.1

Ab dieser Version sind für Snowpark-Objekte keine Angaben zum temporären Schema oder zur temporären Datenbank mehr erforderlich (die Einstellungen TEMP_SCHEMA und TEMP_DB). Die Snowpark-Bibliothek erstellt automatisch temporäre Versionen der benötigten Objekte.

API-Änderungen

Die Methode DataFrame.cache() wird durch die Methode DataFrame.cacheResult() ersetzt.

Die neue Methode erstellt mit den zwischengespeicherten Ergebnissen einen neuen DataFrame und gibt diesen zurück, ohne dass dies Einfluss auf den aktuellen DataFrame hat. Als Ergebnis dieser Änderung ist das DataFrame-Objekt nun unveränderlich.

Neue APIs

  • Der Klasse RelationalGroupedDataFrame wurden die folgenden neuen Methoden hinzugefügt:

    • avg

    • max

  • Der Klasse DataFrame wurden die folgenden neuen Methoden hinzugefügt:

    • groupByGroupingSets

    • clone

    • createOrReplaceTempView

  • Dem Objekt „functions“ wurden die folgenden neuen Funktionen hinzugefügt:

    • toScalar

  • Es wurde ein Objekt „Session.file“ hinzugefügt, das die folgenden neuen Methoden zur Ausführung von Dateioperationen bereitstellt:

    • get

    • put

  • An der Methode Session.createDataFrame wurden folgende Änderungen vorgenommen:

    • Unterstützung von benutzerdefinierten Schemas hinzugefügt.

    • Unterstützung für Angabe von Array/Zuordnung mit Variant-/Geography-Daten hinzugefügt.

    • Unterstützung von Geography/Variant-Datentypen in UDFs hinzugefügt.

  • Die Methode registerPermanent wurde zur Klasse UDFRegistration hinzugefügt.

Fehlerkorrekturen

  • Problem mit Anführungszeichen in DataFrame-Spaltennamen wurde behoben.

  • Problem behoben, bei dem Daten, die Backslashes, einfache Anführungszeichen und Zeilenumbruchzeichen enthalten, nicht entschlüsselt werden konnten.

  • Problem behoben, bei dem die UDF-Erstellung mit der Fehlermeldung „code too large“ (Code zu lang) fehlschlägt.

  • Problem behoben, bei dem die UDF-Closure den Wert einer lokalen Zeichenfolgenvariablen nicht erfassen konnte.

  • Für die folgenden SQL-Klauseln wurde ein Ergebnisschema hinzugefügt:

    • GRANT/REVOKE

    • DESCRIBE

    • CREATE

    • USE

  • Problem beim Erstellen einer UDF unter Verwendung von Snowpark in Visual Studio Code mit der Metals-Erweiterung behoben.