Notes de publication du calcul serverless
Cet article explique les fonctionnalités et les comportements actuellement disponibles et à venir dans le calcul serverless pour les notebooks et les travaux.
Pour plus d’informations sur le calcul serverless, consultez Se connecter à un calcul serverless.
Azure Databricks publie régulièrement des mises à jour vers le calcul serverless, mettant automatiquement à niveau le runtime de calcul serverless pour prendre en charge les améliorations et les mises à niveau vers la plateforme. Tous les utilisateurs obtiennent les mêmes mises à jour, déployées sur une courte période.
versions de l'environnement sans serveur
Le calcul serverless Databricks pour les notebooks et les travaux propose une architecture basée sur Spark Connect, ce qui permet des mises à niveau de moteur indépendantes sans impact sur l’application. Pour garantir la compatibilité des applications, les charges de travail serverless utilisent une API versionnée, appelée version de l’environnement ou client, qui reste compatible avec les versions de serveur plus récentes.
La dernière version de l’environnement continue de recevoir des mises à jour jusqu’à ce qu’une nouvelle version soit publiée. Les utilisateurs peuvent choisir parmi l’une des versions d’environnement prises en charge suivantes :
Notes de publication
Cette section inclut des notes de publication pour le calcul serverless. Les notes de publication sont organisées par année et par semaine de l’année. Le calcul serverless s’exécute toujours à l’aide de la dernière version publiée ici.
- Paramètre mémoire élevée disponible sur les notebooks serverless (préversion publique)
- Version 16.1
- Version 15.4
- Le JDK a changé de niveau de JDK 8 à JDK 17
- Version 15.1
- Version 14.3
Paramètre mémoire élevée disponible sur les notebooks serverless (préversion publique)
7 février 2025
Vous pouvez maintenant configurer une taille de mémoire plus élevée pour vos charges de travail de notebook de calcul serverless. Ce paramètre peut être appliqué aux charges de travail de cahier interactives et planifiées.
L’utilisation serverless avec une mémoire élevée a un taux d’émission DBU plus élevé que la mémoire standard.
Pour plus d’informations, consultez Configurer une mémoire élevée pour vos charges de travail serverless.
Version 16.1
5 février 2025
Cette version de calcul sans serveur correspond approximativement à Databricks Runtime 16.0 et Databricks Runtime 16.1.
Nouvelles fonctionnalités
prise en charge d’Avro pour le schéma récursif : Vous pouvez désormais utiliser l’option
recursiveFieldMaxDepth
avec la fonctionfrom_avro
et la source de donnéesavro
. Cette option définit la profondeur maximale pour la récursivité du schéma sur la source de données Avro. Consultez Lire et écrire des données Avro en streaming.Prise en charge étendue du registre de schémas Confluent pour Avro : Serverless prend désormais en charge la référence de schéma Avro avec le registre de schémas Confluent. Consultez S’authentifier auprès d’un registre de schémas Confluent externe.
Forcer le reclustering sur les tables avec clustering liquide : Vous pouvez maintenant utiliser la syntaxe
OPTIMIZE FULL
pour forcer le reclustering de tous les enregistrements d'une table avec le clustering liquide activé. Consultez Forcer le reclustering pour tous les enregistrements.Les API Delta pour Python prennent désormais en charge les colonnes d’identité : Vous pouvez désormais utiliser les API Delta pour Python pour créer des tables avec des colonnes d’identité. Consultez Utiliser des colonnes d’identité dans Delta Lake.
Créer des tables en cluster liquides au cours d’écritures de streaming : Vous pouvez désormais utiliser
clusterBy
pour activer le clustering liquide lors de la création de nouvelles tables avec des écritures de streaming structuré. Consultez Activer le clustering liquide.Prise en charge de la clause OPTIMIZE FULL : calcul serverless prend désormais en charge la clause OPTIMIZE FULL. Cette clause optimise tous les enregistrements d’une table qui utilise le clustering liquide, y compris les données qui ont pu être précédemment regroupées.
Prise en charge de la spécification des options WITH dans INSERT et la référence table : le calcul serverless prend désormais en charge une spécification d’options pour les références de table et les noms de tables d’une instruction
INSERT
qui peut être utilisée pour contrôler le comportement des sources de données.Nouvelles fonctions SQL : Les fonctions SQL suivantes sont désormais disponibles sur le calcul serverless :
- try_url_decode est une version tolérante aux erreurs de url_decode.
- zeroifnull retourne 0 si l’expression d’entrée à la fonction
zeroifnull()
estNULL
. - nullifzero retourne
NULL
si l’entrée est 0 ou si elle n’est pas 0. - dayname(expr) renvoie l’acronyme anglais à trois lettres du jour de la semaine pour la date donnée.
- uniform(expr1, expr2 [,seed]) renvoie une valeur aléatoire avec des valeurs indépendantes et distribuées de façon identique dans la plage de nombres spécifiée.
- randstr(length) renvoie une chaîne aléatoire de caractères alphanumériques
length
.
Activer l’évolution automatique du schéma lors de la fusion de données dans une table Delta : Support a été ajouté pour le membre
withSchemaEvolution()
de la classeDeltaMergeBuilder
. PermetwithSchemaEvolution()
d’activer l’évolution automatique du schéma pendant lesMERGE
opérations. Par exemple :mergeBuilder.whenMatched(...).withSchemaEvolution().execute()}}
.prise en charge des classements dans Apache Spark est disponible en préversion publique : Vous pouvez désormais affecter des classements respectant la casse et prenant en charge la langue aux colonnes et expressions
STRING
. Ces classements sont utilisés dans les comparaisons de chaînes, le tri, les opérations de regroupement et de nombreuses fonctions de chaîne. Voir Classement.Prise en charge des classements dans Delta Lake est en préversion publique : Vous pouvez maintenant définir des classements pour les colonnes lors de la création ou de la modification d’une table Delta. ConsultezSupport de classement pour Delta Lake.
LITE
mode aspirateur est disponible en aperçu public : Vous pouvez désormais utiliserVACUUM table_name LITE
pour effectuer une opération d'aspiration plus légère qui exploite les métadonnées dans le journal des transactions Delta. Voir mode complet vs mode léger et VACUUM.Prise en charge du paramétrage de la clause
USE CATALOG with IDENTIFIER
: la IDENTIFIERclause est désormais prise en charge pour l’instruction USE CATALOG. Avec cette prise en charge, vous pouvez paramétrer le catalogue actuel en fonction d’une variable de chaîne ou d’un marqueur de paramètre.COMMENT ON COLUMN prise en charge des tables et des vues : l’instruction COMMENT ON prend désormais en charge la modification des commentaires pour les colonnes d’affichage et de table.
Appel de paramètre nommé pour plus de fonctions : Les fonctions suivantes prennent en charge appel de paramètre nommé :
Le paramètre
SYNC METADATA
à la commande REPAIR TABLE est pris en charge avec le metastore Hive : Vous pouvez maintenant utiliser le paramètreSYNC METADATA
avec la commandeREPAIR TABLE
pour mettre à jour les métadonnées d’une table gérée par metastore Hive. Consultez REPAIR TABLE.Intégrité améliorée des données pour les lots compressés Apache Arrow : Pour mieux protéger contre l’altération des données, chaque lot compressé Apache Arrow
LZ4
inclut désormais le contenuLZ4
et les sommes de contrôle de bloc. Consultez la description du format de cadre LZ4 .Pilote Oracle JDBC intégré : Le calcul sans serveur dispose désormais du pilote Oracle JDBC intégré. Si vous utilisez un fichier JAR du pilote JDBC chargé par le client via
DriverManager
, vous devez réécrire des scripts pour utiliser explicitement le fichier JAR personnalisé. Sinon, le pilote intégré est utilisé. Ce pilote prend uniquement en charge la Lakehouse Federation. Pour d'autres scénarios, vous devez fournir votre propre pilote.Erreurs plus détaillées pour les tables Delta accessibles avec des chemins d’accès : Une nouvelle expérience de message d’erreur pour les tables Delta accessibles à l’aide de chemins est désormais disponible. Toutes les exceptions sont désormais transférées à l’utilisateur(-trice). L’exception
DELTA_MISSING_DELTA_TABLE
est désormais réservée lorsque les fichiers sous-jacents ne peuvent pas être lus en tant que table Delta.
Changements de comportement
Changement majeur : RStudio hébergé est arrivé en fin de vie: Avec cette version, le serveur RStudio hébergé par Databricks est arrivé à fin de vie et n'est disponible sur aucun espace de travail Azure Databricks s'exécutant sur un calcul serverless. Pour en savoir plus et voir une liste d’alternatives à RStudio, consultez la dépréciation de RStudio Server hébergée.
Changement cassant : suppression de la prise en charge de la modification de
byte
, deshort
, deint
et de typeslong
aux types plus larges : Pour garantir un comportement cohérent entre les tables Delta et Iceberg, les modifications de type de données suivantes ne peuvent plus être appliquées aux tables avec la fonctionnalité d’élargissement de type activée :byte
,short
,int
etlong
àdecimal
.byte
,short
etint
àdouble
.
Analyse correcte des modèles regex avec négation dans le regroupement de caractères imbriqués : Cette version inclut une modification pour prendre en charge l'analyse correcte des modèles regex avec négation dans le regroupement de caractères imbriqués. Par exemple,
[^[abc]]
sera analysé en tant que « tout caractère qui n’est PAS l’un des « abc » ».En outre, le comportement Photon était incohérent avec Spark pour les classes de caractères imbriquées. Les modèles regex contenant des classes de caractères imbriquées n’utilisent plus Photon et utilisent à la place Spark. Une classe de caractères imbriquée est n’importe quel modèle contenant des crochets entre crochets, tels que
[[a-c][1-3]]
.Amélioration de la détection des correspondances dupliquées dans Delta Lake
MERGE
:MERGE
prend désormais en compte les conditions spécifiées dans la clauseWHEN MATCHED
. Consultez Upsert dans une table Delta Lake à l’aide de la fusion.La fonctionnalité de
addArtifact()
est désormais cohérente entre les types de calcul : Lorsque vous utilisezaddArtifact(archive = True)
pour ajouter une dépendance au calcul serverless, l’archive est automatiquement décompressée. Cette modification rend le comportementaddArtifact(archive = True)
cohérent avec le calcul d’un seul utilisateur, qui prend déjà en charge la décompression automatique des archives.Le type de données
VARIANT
ne peut plus être utilisé avec des opérations nécessitant des comparaisons : Vous ne pouvez pas utiliser les clauses ou opérateurs suivants dans les requêtes qui incluent un type de donnéesVARIANT
:DISTINCT
INTERSECT
EXCEPT
UNION
DISTRIBUTE BY
En outre, vous ne pouvez pas utiliser ces fonctions DataFrame :
df.dropDuplicates()
df.repartition()
Ces opérations effectuent des comparaisons et des comparaisons qui utilisent le type de données
VARIANT
produisent des résultats non définis et ne sont pas prises en charge dans Databricks. Si vous utilisez le typeVARIANT
dans vos charges de travail ou tables Azure Databricks, Databricks recommande les modifications suivantes :- Mettez à jour les requêtes ou expressions pour convertir explicitement des valeurs
VARIANT
en types de données nonVARIANT
. - Si vous avez des champs devant être utilisés avec l’une des opérations ci-dessus, extrayez ces champs du type de données
VARIANT
et stockez-les à l’aide de types de données nonVARIANT
.
Consultez les données de variante de requête.
Résolution des bogues
- Les décalages de fuseau horaire incluent désormais les secondes lorsqu’ils sont sérialisés au format CSV, JSON et XML : Les horodatages avec des décalages de fuseau horaire qui incluent des secondes (courants pour les horodatages antérieurs à 1900) omettaient les secondes lors de la sérialisation au format CSV, JSON et XML. Le formateur d’horodatage par défaut a été corrigé et retourne maintenant les valeurs de décalage correctes pour ces horodatages.
Autres modifications
- codes d’erreur renommés pour la source
cloudFiles
Structured Streaming : Les codes d’erreur suivants ont été renommés :_LEGACY_ERROR_TEMP_DBR_0143
est renomméCF_INCORRECT_STREAM_USAGE
._LEGACY_ERROR_TEMP_DBR_0260
est renomméCF_INCORRECT_BATCH_USAGE
.
Version 15.4
28 octobre 2024
Cette version de calcul serverless correspond approximativement à Databricks Runtime 15.4
Nouvelles fonctionnalités
- Fonctions de validation UTF-8 : cette version présente les fonctions suivantes pour valider les chaînes UTF-8 :
- is_valid_utf8 vérifie si une chaîne est une chaîne UTF-8 valide.
- make_valid_utf8 convertit une chaîne UTF-8 potentiellement non valide en chaîne UTF-8 valide à l’aide de caractères de substitution.
- validate_utf8 génère une erreur si l’entrée n’est pas une chaîne UTF-8 valide.
- try_validate_utf8 retourne
NULL
si l’entrée n’est pas une chaîne UTF-8 valide.
- Activer UniForm Iceberg en utilisant ALTER TABLE : Vous pouvez maintenant activer UniForm Iceberg sur des tables existantes sans réécrire les fichiers de données. Consultez Activer les lectures d'Iceberg sur une table existante.
- try_url_decode fonction : cette version introduit la fonction try_url_decode , qui décode une chaîne encodée PAR URL. Si la chaîne n’est pas au format correct, la fonction retourne
NULL
au lieu de lever une erreur. - Autorisez éventuellement l’optimiseur à s’appuyer sur des contraintes de clé étrangère non appliquées : pour améliorer les performances des requêtes, vous pouvez désormais spécifier le
RELY
mot clé surFOREIGN KEY
les contraintes lorsque vous créez ou ALTER une table. - Exécutions de travaux parallélisées pour les remplacements sélectifs : remplacements sélectifs à l’aide
replaceWhere
de travaux d’exécution qui suppriment des données et insèrent de nouvelles données en parallèle, ce qui améliore les performances des requêtes et l’utilisation du cluster. - Amélioration des performances pour le flux de données modifiées avec des remplacements sélectifs : les remplacements sélectifs à l’aide
replaceWhere
de tables avec le flux de données modifiées n’écrivent plus de fichiers de données modifiées distincts pour les données insérées. Ces opérations utilisent une colonne masquée_change_type
présente dans les fichiers de données Parquet sous-jacents pour enregistrer les changements sans amplification d’écriture. - Latence de requête améliorée pour la
COPY INTO
commande : cette version inclut une modification qui améliore la latence de requête pour laCOPY INTO
commande. Cette amélioration est implémentée en rendant asynchrone le chargement de l’état par le magasin d’états RocksDB. Avec ce changement, vous devez constater une amélioration de la durée de démarrage pour les requêtes avec des états volumineux, telles que les requêtes avec un grand nombre de fichiers déjà ingérés. - Prise en charge de la suppression de la fonctionnalité de table de contraintes de vérification : vous pouvez désormais supprimer la
checkConstraints
fonctionnalité de table à partir d’une table Delta à l’aideALTER TABLE table_name DROP FEATURE checkConstraints
de . Consultez Désactiver des contraintes de validation.
Changements de comportement
Modification de la liaison de schéma pour les vues : lorsque les types de données dans la requête sous-jacente d’une vue sont modifiés par rapport à ceux utilisés lors de la création de la vue, Databricks ne lève plus d’erreurs pour les références à la vue lorsqu’aucun cast sécurisé ne peut être effectué.
Au lieu de cela, l’affichage compense l’utilisation de règles de cast régulières, le cas échéant. Ce changement permet à Databricks de tolérer les modifications de schéma de table plus facilement.
Interdire la tolérance de syntaxe non documentée
!
pourNOT
une logique booléenne extérieure : Databricks ne tolérera plus l’utilisation comme!
synonyme deNOT
l’extérieur de la logique booléenne. Ce changement réduit la confusion, s’aligne sur la norme SQL, et rend SQL plus portable. Par exemple :CREATE ... IF ! EXISTS
, IS ! NULL, propriété de champ ou colonne! NULL
,! IN
et ! BETWEEN doit être remplacé par :CREATE ... IF NOT EXISTS
,IS NOT NULL
,NOT NULL
propriété de champ ou colonne,NOT IN
etNOT BETWEEN
.L’opérateur de préfixe booléen
!
(par exemple,!is_mgr
ou!(true AND false)
) n’est pas affecté par ce changement.Les parties non documentées et non traitées de la syntaxe de définition des colonnes dans les vues sont interdites : Databricks prend en charge CREATE VIEW avec des colonnes nommées et des commentaires de colonnes.
La spécification des types de colonnes, des contraintes
NOT NULL
, ou deDEFAULT
a été tolérée dans la syntaxe sans avoir d’effet. Databricks va supprimer cette tolérance de syntaxe. Cela réduira la confusion, s’alignera sur la norme SQL et autorisera des améliorations ultérieures.Gestion cohérente des erreurs pour le décodage Base64 dans Spark et Photon : cette version modifie la façon dont Photon gère les erreurs de décodage Base64 pour qu’elles correspondent à la gestion Spark de ces erreurs. Avant ces modifications, le chemin de génération de code Photon et Spark ne parvenait parfois pas à déclencher des exceptions d’analyse, tandis que l’exécution interprétée par Spark déclenchait correctement
IllegalArgumentException
ouConversionInvalidInputError
. Cette mise à jour garantit que Photon déclenche constamment les mêmes exceptions que Spark pendant les erreurs de décodage Base64, ce qui fournit une gestion des erreurs plus prévisible et fiable.L’ajout d’une
CHECK
contrainte sur une colonne non valide retourne maintenant la UNRESOLVED_COLUMN. WITH_SUGGESTION classe d’erreur : pour fournir une messagerie d’erreur plus utile, dans Databricks Runtime 15.3 et versions ultérieures, uneALTER TABLE ADD CONSTRAINT
instruction qui inclut une contrainte référençant unCHECK
nom de colonne non valide retourne la UNRESOLVED_COLUMN. WITH_SUGGESTION classe d’erreur . Auparavant, une erreurINTERNAL_ERROR
était retournée.
Le JDK a changé de niveau de JDK 8 à JDK 17
15 août 2024
Le calcul serverless pour les notebooks et les flux de travail a migré du Kit de développement Java (JDK) 8 vers JDK 17 côté serveur. Cette mise à niveau inclut les modifications comportementales suivantes :
Résolution des bogues
Analyse correcte des modèles regex avec négation dans le regroupement de caractères imbriqués : avec cette mise à niveau, Azure Databricks prend désormais en charge l’analyse correcte des modèles regex avec la négation dans le regroupement de caractères imbriqués. Par exemple, [^[abc]]
sera analysé en tant que « tout caractère qui n’est PAS l’un des « abc » ».
En outre, le comportement Photon était incohérent avec Spark pour les classes de caractères imbriquées. Les modèles regex contenant des classes de caractères imbriquées n’utilisent plus Photon et utilisent à la place Spark. Une classe de caractères imbriquée est n’importe quel modèle contenant des crochets entre crochets, tels que [[a-c][1-3]]
.
Version 15.1
23 juillet 2024
Cette version de calcul serverless correspond globalement à Databricks Runtime 15.1
Nouvelles fonctionnalités
Prise en charge de la syntaxe de l'étoile (*
) dans WHERE
la clause : Vous pouvez désormais utiliser la syntaxe de l'étoile (*
) dans la WHERE
clause pour faire référence à toutes les colonnes de la SELECT
liste .
Par exemple : SELECT * FROM VALUES(1, 2) AS T(a1, a2) WHERE 1 IN(T.*)
.
Modifications
Récupération améliorée des erreurs pour l’analyse JSON : l’analyseur JSON utilisé pour les expressions de chemin d’accès from_json()
et JSON récupère désormais plus rapidement à partir de la syntaxe incorrecte, ce qui entraîne moins de perte de données.
Lorsque vous rencontrez une syntaxe JSON malformée dans un champ de struct, une valeur de tableau, une clé de carte ou une valeur de carte, l’analyseur JSON retourne désormais NULL
uniquement pour le champ, la clé ou l’élément non lisibles. Les champs, clés ou éléments suivants seront correctement analysés. Avant cette modification, l’analyseur JSON a abandonné l’analyse du tableau, du struct ou de la carte et retourné NULL
pour le contenu restant.
Version 14.3
15 avril 2024
Il s’agit de la version initiale du calcul serverless. Ceci correspond approximativement à Databricks Runtime 14.3 avec certaines modifications qui suppriment la prise en charge de certaines fonctionnalités non serverless et héritées.
Paramètres de configuration Spark pris en charge
Pour automatiser la configuration de Spark sur le calcul serverless, Azure Databricks a supprimé la prise en charge de la définition manuelle de la plupart des configurations Spark. Vous pouvez uniquement définir manuellement les paramètres de configuration Spark suivants :
spark.sql.legacy.timeParserPolicy
(La valeur par défautCORRECTED
)spark.sql.session.timeZone
(La valeur par défautEtc/UTC
)spark.sql.shuffle.partitions
(La valeur par défautauto
)spark.sql.ansi.enabled
(La valeur par défauttrue
)
Les exécutions de travaux sur le calcul serverless échouent si vous définissez une configuration Spark qui ne figure pas dans cette liste.
Pour découvrir plus d’informations sur la configuration des propriétés Spark, consultez Configurer les propriétés de configuration Spark sur Azure Databricks.
Les fonctions input_file sont dépréciées
Les fonctions input_file_name(), input_file_block_length() et input_file_block_start() ont été dépréciées. L’utilisation de ces fonctions est fortement déconseillée.
Utilisez plutôt la colonne de métadonnées de fichier pour récupérer les informations de métadonnées de fichier.
Changements comportementaux
Calcul serverless verison 2024.15 inclut les modifications comportementales suivantes :
- Correctif de bogue unhex(hexStr) : lors de l’utilisation de la fonction
unhex(hexStr)
, hexStr est toujours rempli jusqu’à un octet entier. Auparavant, la fonction unhex ignorait le premier octet. Par exemple :unhex('ABC')
produit désormaisx'0ABC'
au lieu dex'BC'
. - Les alias de colonne générés automatiquement sont désormais stables : lorsque le résultat d’une expression est référencé sans alias de colonne spécifié par l’utilisateur, cet alias généré automatiquement sera désormais stable. Le nouvel algorithme peut entraîner une modification des noms générés automatiquement précédemment utilisés dans les fonctionnalités telles que les vues matérialisées.
- Les analyses de table avec champs de type
CHAR
sont désormais toujours remplies : les tables Delta, certaines tables JDBC et certaines sources de données externes stockent les données CHAR sous forme non remplies. Lors de la lecture, Azure Databricks place désormais les données avec des espaces à la longueur déclarée pour garantir une sémantique correcte. - Les casts de BIGINT/DECIMAL en TIMESTAMP lèvent une exception pour les valeurs débordées : Azure Databricks autorise la conversion de BIGINT et DECIMAL en TIMESTAMP en traitant la valeur comme le nombre de secondes de l’époque Unix. Auparavant, Azure Databricks retournerait des valeurs débordées, mais lève désormais une exception en cas de dépassement de capacité. Utilisez
try_cast
pour retourner NULL au lieu d’une exception. - L’exécution de pySpark UDF a été améliorée pour correspondre au comportement exact de l’exécution UDF sur le calcul d’un seul utilisateur : les modifications suivantes ont été apportées :
- Les fonctions définies par l’utilisateur avec un type de retour de chaîne ne convertissent plus implicitement les valeurs non-chaînes en chaînes. Avant, les fonctions définies par l’utilisateur avec un type de retour
str
appliqueraient un wrapperstr(..)
au résultat, quel que soit le type de données réel de la valeur retournée. - Les fonctions définies par l’utilisateur avec types de retour
timestamp
n’appliquent plus implicitement de conversion de fuseau horaire aux horodatages.
- Les fonctions définies par l’utilisateur avec un type de retour de chaîne ne convertissent plus implicitement les valeurs non-chaînes en chaînes. Avant, les fonctions définies par l’utilisateur avec un type de retour