Notes de publication du calcul serverless

Important

Cette fonctionnalité est disponible en préversion publique. Pour plus d’informations sur l’éligibilité et l’activation, consultez Activer le calcul serverless en préversion publique.

Cet article explique les fonctionnalités et les comportements actuellement disponibles et à venir dans le calcul serverless pour les notebooks et les flux de travail.

Databricks publie régulièrement des mises à jour sur le calcul serverless. Tous les utilisateurs obtiennent les mêmes mises à jour, déployées sur une courte période. Consultez Comment les versions sont-elles déployées ?.

Changements comportementaux à venir

Cette section met en évidence 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.

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.

Calcul serverless version 2024.15

15 avril 2024

Calcul serverless version 2024.15 a été mis en production. Il s’agit de la version initiale de Calcul serverless qui 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.

Cette version apporte les mises à jour suivantes :

Configurations Spark non prises en charge

Dans le but d’automatiser les configurations Spark dans le calcul serverless, Databricks a supprimé la prise en charge de la plupart des configurations Spark. Vous ne pouvez définir spark.sql.legacy.timeParserPolicy et spark.sql.session.timeZone que dans vos configurations Spark.

Si vous essayez une autre configuration Spark, elle ne s’exécutera pas.

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

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

Limites

Le calcul serverless est basé sur l’architecture de calcul partagée. Les limitations les plus importantes héritées du calcul partagé sont répertoriées ci-dessous, ainsi que d’autres limitations spécifiques au serveur. Pour obtenir la liste complète des limitations de calcul partagées, consultez Limitations du mode d’accès au calcul pour le catalogue Unity.

Limitations générales

  • Scala et R ne sont pas pris en charge.
  • Seul ANSI SQL est pris en charge lors de l’écriture de SQL.
  • Les API RDD Spark ne sont pas prises en charge.
  • Le contexte Spark (sc), spark.sparkContext et sqlContext ne sont pas pris en charge.
  • Vous ne pouvez pas accéder à DBFS.
  • Les services conteneur Databricks ne sont pas pris en charge.
  • Le terminal web n’est pas pris en charge.
  • Les requêtes de Flux structuré nécessitent l’appel de query.awaitTermination() pour s’assurer que la requête est terminée.
  • Aucune requête ne peut s’exécuter plus de 48 heures.
  • Vous devez utiliser le catalogue Unity pour vous connecter à des sources de données externes. Utilisez les emplacements externes pour accéder au stockage cloud.
  • La prise en charge des sources de données est limitée à AVRO, BINARYFILE, CSV, DELTA, JSON, KAFKA, ORC, PARQUET, ORC, TEXT et XML.
  • Les fonctions définies par l’utilisateur (UDF) ne peuvent pas accéder à Internet.
  • Les lignes individuelles ne doivent pas dépasser la taille maximale de 128 Mo.
  • L’interface utilisateur Spark n’est pas disponible. Utilisez plutôt le profil de requête pour afficher des informations sur vos requêtes Spark. Voir Profil de requête.

Limitations du Machine Learning

Limitations des blocs-notes

  • Les blocs-notes ont accès à une mémoire de 8 Go qui ne peut pas être configurée.
  • Les bibliothèques limitées aux notebooks ne sont pas mises en cache entre les sessions de développement.
  • Le partage de tables et de vues TEMP lors du partage d’un bloc-notes entre les utilisateurs n’est pas pris en charge.
  • La saisie semi-automatique et l’explorateur de variables pour les dataframes dans les notebooks ne sont pas prises en charge.

Limitations de flux de travail

  • La taille du pilote pour le calcul serverless pour les flux de travail est actuellement fixe et ne peut pas être modifiée.
  • Les journaux des tâches ne sont pas isolés par exécution de tâche. Les journaux contiennent la sortie de plusieurs tâches.
  • Les bibliothèques de tâches ne sont pas prises en charge pour les tâches de notebook. Utilisez les bibliothèques limitées à un notebook. Consultez Bibliothèques Python délimitées à un notebook.

Limitations spécifiques au calcul

Les fonctionnalités spécifiques au calcul suivantes ne sont pas prises en charge :

  • Stratégies de calcul
  • Scripts d’initialisation limités au calcul
  • Bibliothèques limitées au calcul, y compris les sources de données personnalisées et les extensions Spark. Utilisez les bibliothèques limitées à un notebook.
  • Configurations d’accès aux données au niveau du calcul. Par conséquent, l’accès aux tables et aux fichiers via HMS sur des chemins cloud, ou avec des montages DBFS qui n’ont pas d’informations d’identification incorporées ne fonctionnera pas.
  • Pools d’instances
  • Journaux des événements de calcul
  • Configurations de calcul Apache Spark et variables d’environnement

Forum aux questions (FAQ)

Comment les versions sont-elles déployées ?

Le calcul serverless est un produit sans version, ce qui signifie que Databricks met 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.

Comment déterminer quelle version suis-je en train d’exécuter ?

Vos charges de travail serverless sont toujours en cours d’exécution sur la dernière version du runtime. Consultez les notes de publication de la version la plus récente.