Notes de version de Snowpark Library for Scala and Java pour 2022¶
Cet article contient les notes de versions de la bibliothèque Snowpark pour Scala et de la bibliothèque Snowpark pour Java, y compris les éléments suivants, le cas échéant :
Changements de comportement
Nouvelles fonctionnalités
Corrections de bogues pour les clients
Snowflake utilise la version sémantique pour les mises à jour Snowpark Library for Scala and Java.
Version 1.6.2 (26 octobre 2022)¶
Version compatible avec Snowflake : 6.35.x
Améliorations¶
Améliorations internes des procédures stockées écrites en Java ou Scala.
Version 1.6.1 (30 septembre 2022)¶
Version compatible avec Snowflake : 6.31.x
Cette version présente un problème connu qui pourrait interrompre la création d’objets temporaires. Veuillez utiliser la version 1.6.2 à la place.
Améliorations¶
Améliorations internes des procédures stockées écrites en Java ou Scala.
Version 1.6.0 (12 août 2022)¶
Version compatible avec Snowflake : 6.27.x
Améliorations¶
Améliorations internes des UDTFs.
Version 1.5.0 (1er juillet 2022)¶
Version compatible avec Snowflake : 6.22.x
Nouvelles fonctionnalités¶
Prise en charge de l’écriture de DataFrames dans des fichiers sur une zone de préparation ajoutée à l’API Scala et à l’API Java.
Améliorations¶
Optimisation des requêtes SQL générées par la bibliothèque client Snowpark.
Amélioration du message d’erreur qui est enregistré lorsque la bibliothèque Snowpark ne parvient pas à résoudre le nom d’une colonne dans
un DataFrame (par exemple, lorsque vous tentez d’accéder à une colonne qui n’existe pas).
Version 1.4.1 (26 mai 2022)¶
Version compatible avec Snowflake : 6.17.x
Changements¶
Mise à jour de la version de
jackson-core
etjackson-annotations
dont dépend la bibliothèque Snowpark vers la version 2.13.2.Mise à jour de la version de
jackson-databind
dont dépend la bibliothèque Snowpark vers la version 2.13.2.2.Suppression des classes
jackson-core
,jackson-databind
, etjackson-annotations
du fichier JAR Snowpark.Si vous avez téléchargé le fichier
.tar.gz
/.zip
, les fichiers JAR pour les classes Jackson sont maintenant fournis séparément dans le sous-répertoirelib/
(jackson-core-2.13.2.jar
,jackson-databind-2.13.2.2.jar
, etjackson-annotations-2.13.2.jar
).Si vous spécifiez la bibliothèque Snowpark comme dépendance dans votre fichier
pom.xml
et que vous voulez dépendre d’une version différente des bibliothèques Jackson dans votre fichier pom.xml, vous pouvez exclure la dépendance sur les bibliothèques Jackson de la dépendance sur la bibliothèque Snowpark.
Version 1.4.0 (28 avril 2022)¶
Version compatible avec Snowflake : 6.14.x
Nouvelles fonctionnalités¶
Mise à disposition de l’API Snowpark Java sur AWS et Azure.
L’API est encore disponible en tant que fonction de prévisualisation dans GCS.
L’API Scala de Snowpark est maintenant disponible de manière générale sur Azure.
Avant cette version, l’API n’était généralement disponible que sur AWS. L’API est toujours disponible en tant que fonction en avant-première sur GCS.
Ajout d’une API Java pour créer des UDTFs. Notez qu’il s’agit d’une fonctionnalité en avant-première.
Ajout de nouvelles APIs dans Scala et Java pour le chargement et le téléchargement de données à partir d’une zone de préparation (
FileOperation.uploadStream and FileOperation.downloadStream
).Ajout de la méthode
DataFrameWriter.option
dans Scala et Java pour spécifier comment les valeurs des colonnes du DataFrame doivent être mappées vers les colonnes de la table. La méthode option vous permet de spécifier que leDataFrameWriter
doit utiliser le nom de la colonne plutôt que l’ordre de la colonne.
Améliorations¶
Désactivation du Closure Cleaner dans les sessions Java. Le Closure Cleaner ne fonctionne que dans les programmes Scala.
Amélioration de la prise en charge de
Array
etMap
dans l’API Java Row.
Version 1.3.0 (18 mars 2022)¶
Version compatible avec Snowflake : 6.8.x
Nouvelles fonctionnalités¶
Ajout de la prise en charge de l’écriture de procédures stockées en Java.
Ajout de la prise en charge de la fusion asynchrone de lignes dans une table en Scala.
Version 1.2.0 (2 mars 2022)¶
Version compatible avec Snowflake : 6.5.x
Nouvelles fonctionnalités¶
Ajout de l’API Java pour Snowpark.
Ajout de la prise en charge de l’avant-première dans l’API Scala pour la création d’UDTFs.
Ajout d’une version distincte de la bibliothèque conforme aux exigences de sécurité de FIPS (Federal Information Processing Standard). Vous pouvez télécharger cette bibliothèque à partir des emplacements suivants :
Pour pointer vers la bibliothèque conforme-FIPS à partir d’un fichier de compilation sbt ou d’un projet Maven, utilisez
snowpark-fips
commeartifactId
.
Version 1.1.0 (4 février 2022)¶
Version de Snowflake compatible : 6.2.x
Ajout de la prise en charge de Écriture de procédures stockées en Scala.
L’API de référence pour cette version est disponible dans la documentation Snowflake et dans un fichier .zip
ou .tar.gz
dans le Snowflake Client Repository.
Version 1.0.0 (26 janvier 2022)¶
Version de Snowflake compatible : 6.1.x
Version en disponibilité générale (GA) sur AWS. (Snowpark est encore une fonction en avant-première sur Azure et GCP.)
L’API de référence pour cette version est disponible dans un fichier .zip
ou .tar.gz
dans le Snowflake Client Repository.
Version 0.12.0 (4 janvier 2022)¶
Version compatible avec Snowflake : 5.45.x
L’API de référence pour cette version est disponible dans un fichier .zip
ou .tar.gz
dans le Snowflake Client Repository.
Nouvelles fonctionnalités¶
Améliorations¶
Dans le code généré pour les UDFs, remplacez un bloc de code statique par une fonction d’instance d’objet.
Réorganisation des messages d’erreur.
Modification de la fonction
saveAsTable
afin qu’une nouvelle table ne soit pas créée en mode Ajout.Amélioration de la fonction
callUDF
pour prendre en charge n’importe quel type d’argument.Modification de la bibliothèque pour définir la balise de requête au niveau de l’instruction, plutôt qu’au niveau de la session.
Version 0.11.0 (16 novembre 2021)¶
Version compatible avec Snowflake : 5.45.x
L’API de référence pour cette version est disponible dans un fichier .zip
ou .tar.gz
dans le Snowflake Client Repository.
Nouvelles fonctionnalités¶
Ajout de la méthode generator à la classe
Session
et des fonctions seq1, seq2, seq4, seq8, et uniform à l’objet functions.Ajout de la méthode getSessionInfo à la classe Session.
Ajout d’APIs pour effectuer des actions sur des DataFrames de manière asynchrone.
Améliorations¶
Mise à niveau du pilote JDBC Snowflake vers la version 3.13.9. Amélioration du message d’erreur signalé lorsqu’aucune base de données actuelle n’est sélectionnée pour être utilisée.
Version 0.10.1 (27 octobre 2021)¶
Version compatible avec Snowflake : 5.38.x
L’API de référence pour cette version est disponible dans un fichier .zip
ou .tar.gz
dans le Snowflake Client Repository.
Corrections de bogues¶
Correction d’un problème de chargement de fichiers vers une zone de préparation GCP où le mauvais préfixe était utilisé.
Correction d’un problème dans lequel une réponse 403 HTTP était renvoyée lors de l’accès à une URL pré-signée pour GCP.
Version 0.10.0 (18 octobre 2021)¶
Version compatible avec Snowflake : 5.37.x
L’API de référence pour cette version est disponible dans un fichier .zip
ou .tar.gz
dans le Snowflake Client Repository.
Nouvelles fonctionnalités¶
Ajout de la nouvelle méthode dropDuplicates à la classe DataFrame.
Ajout de la prise en charge des expressions in à la classe Column (avec la méthode in) et à l’objet functions (avec la fonction in).
Extension de l’itérateur renvoyé par DataFrame.toLocalIterator pour prendre en charge l’interface
Closeable
, ce qui vous permet d’appeler la méthode close sur l’itérateur.Ajout de la prise en charge de la nouvelle propriété de configuration
snowpark_request_timeout_in_seconds
. Vous pouvez la définir dans la carte / le fichier de configuration pour ajuster le délai d’expiration que la bibliothèque utilise lors du chargement des dépendances vers une zone de préparation. Par défaut, le délai est de 86400 (1 jour).
Améliorations¶
Ajout d’une logique à la méthode DataFrame.withColumns pour vérifier que les noms des colonnes d’entrée ne sont pas spécifiés en double.
Mise à jour des méthodes
clone
dans les classesCopyable
etUpdatable
qui renvoient les bons types DataFrame.Ajout de la prise en charge de la spécification de l’ID de l’application
en définissant la propriété JDBC de l’application dans la carte / le fichier de configuration.
Changements de comportement¶
Suppression des APIs destinées uniquement à Java de l’API Scala .
Remplacement du journaliseur par défaut log4j par SLF4J SimpleLogger.
Corrections de bogues¶
Mise à jour de la bibliothèque pour fermer automatiquement les instructions inutilisées afin de réduire l’utilisation de la mémoire.
Correction de l’ordre des colonnes dans le résultat de la méthode
DataFrame.withColumns
.
Version 0.9.0 (20 septembre 2021)¶
Version compatible avec Snowflake : 5.34.x
L’API de référence pour cette version est disponible dans un fichier .zip
ou .tar.gz
dans le Snowflake Client Repository.
Nouvelles fonctionnalités¶
Ajout d’une nouvelle sous-classe DataFrame, CopyableDataFrame, que vous pouvez utiliser pour copier les données d’un fichier en zone de préparation vers une table. Cela équivaut à la commande COPY INTO <table>.
Ajout de la nouvelle méthode DataFrame.rename() pour renommer les colonnes d’un DataFrame.
Ajout de la nouvelle fonction functions.iff() pour spécifier une expression if-then-else. Est équivalent à la fonction IFF.
Ajout de nouveaux constructeurs pour la classe DecimalType.
Changements de comportement¶
Modification des méthodes DataFrame.union() et DataFrame.unionByName() pour utiliser UNION, au lieu de UNION ALL.
Corrections de bogues¶
Correction de l’erreur
SQL compilation error: Missing column specification
qui pouvait survenir lorsque la bibliothèque Snowpark créait une vue temporaire.
Version 0.8.0 (9 août 2021)¶
Version compatible avec Snowflake : 5.30.x
L’API de référence pour cette version est disponible dans un fichier .zip
ou .tar.gz
dans le Snowflake Client Repository.
Améliorations¶
Refonte de certains codes internes pour supprimer certaines dépendances.
Corrections de bogues¶
Correction d’un problème avec les littéraux BigDecimal dans les cas où l’échelle peut être plus grande que la précision.
Correction d’un problème qui pouvait survenir lors de l’exécution de plusieurs opérations sur les ensembles (par exemple, union, intersection, etc.).
Version 0.7.0 (23 juillet 2021)¶
Version compatible avec Snowflake : 5.29.x
L’API de référence pour cette version est disponible dans un fichier .zip
ou .tar.gz
dans le Snowflake Client Repository.
Nouvelles APIs¶
Introduction de la nouvelle méthode Session.close(). Appelez cette méthode pour fermer la session Snowpark, ce qui annule toutes les requêtes en cours et empêche l’utilisation ultérieure de cette session pour exécuter des requêtes.
Introduction de la nouvelle classe Updatable. Updatable étend la nouvelle classe DataFrame et fournit des capacités supplémentaires liées aux tables (par exemple, la possibilité de mettre à jour et de supprimer des valeurs).
La méthode Session.table() renvoie désormais un objet Updatable, plutôt qu’un objet DataFrame.
Introduction de nouvelles signatures pour les méthodes registerTemporary de la classe UDFRegistration. Ces signatures ne comportent pas de paramètre pour le nom de l’UDF, ce qui signifie que vous pouvez les utiliser pour enregistrer une UDF temporaire anonyme.
Changements au niveau de l’API¶
Comme mentionné ci-dessus, la méthode
Session.table()
renvoie maintenant un objetUpdatable
qui étendDataFrame
.Dans la classe
Geography
, suppression de la prise en charge des formats autres que GeoJSON. Maintenant,Geography
ne prend en charge que le format de données GeoJSON.
Améliorations¶
Amélioration de la méthode
DataFrame.cacheResult()
pour réduire la possibilité d’erreurs de type « L’objet existe déjà ».Amélioration de certains messages d’erreur.
Ajout d’un nouveau message de journal qui imprime les informations de session après la connexion.
Corrections de bogues¶
Correction d’un problème dans lequel la méthode
DataFrame.show()
n’affichait pas correctement les données binaires.Correction d’une erreur qui se produisait lors de l’obtention du numéro de version.
Version 0.6.0 (14 juin 2021)¶
Version de Snowflake compatible : 5.21.x
Version en avant-première sur AWS
L’API de référence pour cette version est disponible dans un fichier .zip
ou .tar.gz
dans le Snowflake Client Repository.
Changements au niveau de l’API¶
Dans cette version, les méthodes suivantes de RelationalGroupedDataFrame nécessitent désormais un argument :
moy
max
median
min
sum
Dans les versions précédentes, si vous appeliez ces méthodes sans argument, elles étaient appliquées à toutes les colonnes numériques du DataFrame. Par exemple, pour un DataFrame df
avec les colonnes (a int, b string, c float)
, appeler df.groupBy("a").max()
équivalait à appeler df.groupBy("a").max(col("a"), col("c"))
.
Avec cette version, l’appel de ces méthodes sans argument donne lieu à une SnowparkClientException
.
Version 0.5.0¶
Nouvelles fonctionnalités¶
Ajout d’un paramètre maxWidth à la méthode DataFrame.show(). Vous pouvez utiliser ce paramètre pour ajuster le nombre de caractères imprimés dans la sortie pour chaque colonne.
Ajout de la méthode Session.cancelAll(), que vous pouvez utiliser pour annuler toutes les actions en cours sur cette session.
Ajout de la méthode DataFrame.toLocalIterator(), qui renvoie un itérateur que vous pouvez utiliser pour récupérer des données, ligne par ligne. Vous pouvez utiliser ceci plutôt que DataFrame.collect(), si vous ne voulez pas charger toutes les données en mémoire en une seule fois.
Ajout de la méthode médiane à la classe RelationalGroupedDataFrame.
Améliorations¶
Amélioration du message d’erreur renvoyé lorsqu’un identificateur n’est pas valide.
Amélioration de la vérification des erreurs pour signaler une erreur lorsqu’aucun nom de base de données ou de schéma n’est spécifié.
Ajout d’une amélioration des performances lors de l’insertion d’un grand nombre de valeurs dans une table.
Mise à jour de la bibliothèque pour gérer de manière cohérente les identificateurs d’objets Snowflake (noms de tables et de vues). Désormais, tous les paramètres qui spécifient des noms de tables ou de vues prennent en charge l’utilisation des éléments suivants :
Noms courts (par exemple, nom_table et nom_vue)
Noms complets (par exemple, database.schema.nom_table)
Identificateurs en plusieurs parties (par exemple Seq(« base de données », « schéma », « nom_vue »))
Ajout d’un contrôle pour vérifier que la version prise en charge de Scala est utilisée. La bibliothèque signalera une erreur si la version de Scala n’est pas compatible.
Corrections de bogues¶
Correction d’un problème d’enregistrement d’UDFs sous Microsoft Windows.
Correction d’un problème avec l’ordre des résultats lors de l’utilisation de DataFrame.sort() avec DataFrame.limit().
Correction de Session.range() pour générer une séquence de chiffres sans trous.
Version 0.4.1¶
Dans cette version, il n’est plus nécessaire de spécifier un schéma temporaire ou une base de données temporaire pour les objets Snowpark (les paramètres TEMP_SCHEMA et TEMP_DB). La bibliothèque Snowpark crée automatiquement des versions temporaires des objets nécessaires.
Changements au niveau de l’API¶
Remplacement de la méthode DataFrame.cache() par la méthode DataFrame.cacheResult().
La nouvelle méthode crée et renvoie un nouveau DataFrame avec les résultats mis en cache et n’a aucun effet sur le DataFrame actuel. Suite à cette modification, l’objet DataFrame est désormais immuable.
Nouvelles APIs¶
Ajout des nouvelles méthodes suivantes à la classe RelationalGroupedDataFrame :
moy
max
Ajout des nouvelles méthodes suivantes à la classe DataFrame :
groupByGroupingSets
clone
createOrReplaceTempView
Ajout des nouvelles fonctions suivantes à l’objet fonctions :
toScalar
Ajout d’un objet Session.file, qui fournit les nouvelles méthodes suivantes pour effectuer des opérations sur les fichiers :
get
put
Ajout des modifications suivantes à la méthode Session.createDataFrame :
Ajout de la prise en charge des schémas fournis par les utilisateurs.
Ajout de la prise en charge de la spécification d’un tableau/d’une carte de données de variantes/géographie.
Ajout de la prise en charge des types de données Géographie/Variante dans des UDFs.
Ajout des méthodes registerPermanent à la classe UDFRegistration.
Corrections de bogues¶
Correction d’un problème lorsque le nom de la colonne DataFrame contient des guillemets.
Correction d’un problème d’impossibilité d’échapper aux données contenant des barres obliques inverses, des guillemets simples et des caractères de saut de ligne.
Correction d’un problème où la création d’UDF échoue avec le message d’erreur indiquant « code trop long ».
Correction d’un problème où la fermeture de l’UDF ne capturait pas la valeur d’une variable locale de type chaîne.
Ajout du schéma de résultat pour les clauses SQL suivantes :
GRANT/REVOKE
DESCRIBE
CREATE
USE
Correction d’un problème lors de l’utilisation de Snowpark dans Visual Studio Code avec l’extension Metals pour créer une UDF.