Partager via


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.

Images client serverless

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 image cliente ou client, qui reste compatible avec les versions plus récentes du serveur.

La dernière image cliente continue de recevoir des mises à jour jusqu’à ce qu’une nouvelle image cliente soit publiée. Les utilisateurs peuvent sélectionner l’une des images clientes 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.

Version 2024.43

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.
  • Activez UniForm Iceberg à l’aide de ALTER TABLE : vous pouvez désormais activer UniForm Iceberg sur des tables existantes sans réécrire des fichiers de données. Consultez Activer en modifiant 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é sur FOREIGN 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 la COPY 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’aide ALTER TABLE table_name DROP FEATURE checkConstraintsde . 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 ! pour NOT une logique booléenne extérieure : Databricks ne tolérera plus l’utilisation comme ! synonyme de NOT 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 et NOT BETWEEN.

    L’opérateur de préfixe booléen ! (par exemple, !is_mgr ou !(true AND false)) n’est pas affecté par ce changement.

  • Interdire les parties non documentées et non traitées de la syntaxe de définition de colonne dans les vues : Databricks prend en charge CREATE VIEW avec des colonnes nommées et des commentaires de colonne.

    La spécification des types de colonnes, des contraintes NOT NULL, ou de DEFAULT 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 ou ConversionInvalidInputError. 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, une ALTER TABLE ADD CONSTRAINT instruction qui inclut une contrainte référençant un CHECK nom de colonne non valide retourne la UNRESOLVED_COLUMN. WITH_SUGGESTION classe d’erreur . Auparavant, une erreur INTERNAL_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éfaut CORRECTED)
  • spark.sql.session.timeZone (La valeur par défaut Etc/UTC)
  • spark.sql.shuffle.partitions (La valeur par défaut auto)
  • spark.sql.ansi.enabled (La valeur par défaut true)

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ésormais x'0ABC' au lieu de x'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 wrapper str(..) 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.