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.

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.

Changements comportementaux à venir

Cette section met l’accent sur les modifications comportementales à venir dans la prochaine version du calcul serverless. Lorsque les modifications seront envoyées en production, elles seront ajoutées aux notes de publication.

Septembre 2024

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 changent par rapport à ceux utilisés lors de la création de la vue, Databricks ne génère plus d’erreurs pour les références à la vue lorsqu’aucun cast sécurisé ne peut être effectué. Au lieu de cela, la vue compense à l’aide de règles de cast régulières dans la mesure du possible.

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 en dehors de la logique booléenne

Databricks ne tolère plus l’utilisation de ! comme synonyme de NOT en dehors de la logique booléenne. 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.

Ce changement réduit la confusion, s’aligne sur la norme SQL, et rend SQL plus portable.

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.

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.30

23 juillet 2024

Cette version de calcul serverless correspond globalement à Databricks Runtime 15.1

Nouvelles fonctionnalités

  • La clause Prise en charge des étoiles (*) dans la WHEREclause : vous pouvez désormais utiliser la clause étoile (*) dans la clause WHERE pour référencer toutes les colonnes de la liste SELECT. 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 2024.15

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, Databricks a supprimé la possibilité de configurer manuellement 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 EXCEPTION)
  • 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.

API de mise en cache et commandes SQL non prises en charge

L’utilisation des API de mise en cache Dataframe et SQL n’est pas prise en charge. L’utilisation de l’une de ces API ou commandes SQL provoque une exception.

API non prises en charge :

Commandes SQL non prises en charge :

Vues temporaires globales non prises en charge

La création de vues temporaires globales n’est pas prise en charge. L’utilisation de l’une de ces commandes entraîne une exception :

Au lieu de cela, Databricks recommande d’utiliser des vues temporaires de session ou de créer des tables où le passage de données intersession est nécessaire.

CREATE FUNCTION (externe) non pris en charge

La commande CREATE FUNCTION (externe) n’est pas prise en charge. L’utilisation de cette commande entraîne une exception.

Au lieu de cela, Databricks recommande d’utiliser CREATE FUNCTION (SQL et Python) pour créer des fonctions définies par l’utilisateur.

Tables Hive SerDe non prises en charge

Les tables Hive SerDe ne sont pas prises en charge. En outre, la commande LOAD DATA correspondante qui charge les données dans une table Hive SerDe n’est pas prise en charge. L’utilisation de la commande entraîne une exception.

La prise en charge des sources de données est limitée à AVRO, BINARYFILE, CSV, DELTA, JSON, KAFKA, ORC, PARQUET, ORC, TEXT et XML.

Variables Hive non prises en charge

Les variables Hive (par exemple ${env:var}, ${configName}, ${system:var} et spark.sql.variable) ou les références de variables de configuration à l’aide de la syntaxe ${var} ne sont pas prises en charge. L’utilisation de variables Hive entraîne une exception.

Utilisez plutôt DECLARE VARIABLE, SET VARIABLE, les références de variable de session SQL et les marqueurs de paramètres (‘?’ou ‘:var’) pour déclarer, modifier et référencer l’état de session. Vous pouvez également utiliser la clause IDENTIFIER pour paramétrer les noms d’objets dans de nombreux cas.

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 de comportement

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, Databricks remplit désormais les données avec des espaces à la longueur déclarée pour garantir une sémantique correcte.
  • Les conversions de BIGINT/DECIMAL en TIMESTAMP lèvent une exception pour les valeurs dépassées : Databricks autorise la conversion de BIGINT et DECIMAL en TIMESTAMP en traitant la valeur comme le nombre de secondes de l’époque Unix. Auparavant, Databricks retournerait des valeurs dépassé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 UDF PySpark a été améliorée pour correspondre au comportement exact de l’exécution UDF sur le calcul mono-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.

Environnement du système

Le calcul serverless inclut l’environnement système suivant :

  • Système d’exploitation : Ubuntu 22.04.3 LTS
  • Python : 3.10.12
  • Delta Lake : 3.1.0

Bibliothèques Python installées

Les bibliothèques Python suivantes sont installées sur le calcul serverless par défaut. Des dépendances supplémentaires peuvent être installées à l’aide du panneau latéral Environment. Consultez Installer les dépendances de notebook.

Bibliothèque Version Bibliothèque Version Bibliothèque Version
anyio 3.5.0 argon2-cffi 21.3.0 argon2-cffi-bindings 21.2.0
asttokens 2.0.5 astunparse 1.6.3 attrs 22.1.0
backcall 0.2.0 beautifulsoup4 4.11.1 black 22.6.0
bleach 4.1.0 blinker 1.4 boto3 1.24.28
botocore 1.27.96 cachetools 5.3.2 certifi 2022.12.7
cffi 1.15.1 chardet 4.0.0 charset-normalizer 2.0.4
click 8.0.4 comm 0.1.2 contourpy 1.0.5
chiffrement 39.0.1 cycler 0.11.0 Cython 0.29.32
databricks-connect 14.3.1 databricks-sdk 0.20.0 dbus-python 1.2.18
debugpy 1.6.7 decorator 5.1.1 defusedxml 0.7.1
distlib 0.3.8 docstring-to-markdown 0.11 entrypoints 0,4
en cours d’exécution 0.8.3 facets-overview 1.1.1 fastjsonschema 2.19.1
filelock 3.13.1 fonttools 4.25.0 google-auth 2.28.1
googleapis-common-protos 1.62.0 grpcio 1.62.0 grpcio-status 1.62.0
httplib2 0.20.2 idna 3.4 importlib-metadata 4.6.4
ipyflow-core 0.0.198 ipykernel 6.25.0 ipython 8.14.0
ipython-genutils 0.2.0 ipywidgets 7.7.2 jedi 0.18.1
jeepney 0.7.1 Jinja2 3.1.2 jmespath 0.10.0
joblib 1.2.0 jsonschema 4.17.3 jupyter-client 7.3.4
jupyter-server 1.23.4 jupyter_core 5.2.0 jupyterlab-pygments 0.1.2
jupyterlab-widgets 1.0.0 keyring 23.5.0 kiwisolver 1.4.4
launchpadlib 1.10.16 lazr.restfulclient 0.14.4 lazr.uri 1.0.6
lxml 4.9.1 MarkupSafe 2.1.1 matplotlib 3.7.0
matplotlib-inline 0.1.6 mccabe 0.7.0 mistune 0.8.4
more-itertools 8.10.0 mypy-extensions 0.4.3 nbclassic 0.5.2
nbclient 0.5.13 nbconvert 6.5.4 nbformat 5.7.0
nest-asyncio 1.5.6 nodeenv 1.8.0 notebook 6.5.2
notebook_shim 0.2.2 numpy 1.23.5 oauthlib 3.2.0
empaquetage 23,2 pandas 1.5.3 pandocfilters 1.5.0
parso 0.8.3 pathspec 0.10.3 patsy 0.5.3
pexpect 4.8.0 pickleshare 0.7.5 Pillow 9.4.0
pip 22.3.1 platformdirs 2.5.2 plotly 5.9.0
pluggy 1.0.0 prometheus-client 0.14.1 prompt-toolkit 3.0.36
protobuf 4.25.3 psutil 5.9.0 psycopg2 2.9.3
ptyprocess 0.7.0 pure-eval 0.2.2 py4j 0.10.9.7
pyarrow 8.0.0 pyarrow-hotfix 0,5 pyasn1 0.5.1
pyasn1-modules 0.3.0 pyccolo 0.0.52 pycparser 2.21
pydantic 1.10.6 pyflakes 3.1.0 Pygments 2.11.2
PyGObject 3.42.1 PyJWT 2.3.0 pyodbc 4.0.32
pyparsing 3.0.9 pyright 1.1.294 pyrsistent 0.18.0
python-dateutil 2.8.2 python-lsp-jsonrpc 1.1.1 python-lsp-server 1.8.0
pytoolconfig 1.2.5 pytz 2022.7 pyzmq 23.2.0
requêtes 2.28.1 rope 1.7.0 rsa 4,9
s3transfer 0.6.2 scikit-learn 1.1.1 scipy 1.10.0
seaborn 0.12.2 SecretStorage 3.3.1 Send2Trash 1.8.0
setuptools 65.6.3 six 1.16.0 sniffio 1.2.0
soupsieve 2.3.2.post1 ssh-import-id 5.11 stack-data 0.2.0
statsmodels 0.13.5 tenacity 8.1.0 terminado 0.17.1
threadpoolctl 2.2.0 tinycss2 1.2.1 tokenize-rt 4.2.1
tomli 2.0.1 tornado 6.1 traitlets 5.7.1
typing_extensions 4.4.0 ujson 5.4.0 unattended-upgrades 0.1
urllib3 1.26.14 virtualenv 20.16.7 wadllib 1.3.6
wcwidth 0.2.5 webencodings 0.5.1 websocket-client 0.58.0
whatthepatch 1.0.2 wheel 0.38.4 widgetsnbextension 3.6.1
yapf 0.33.0 Zipp 1.0.0