Partage via


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 :

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)

Les exécutions de travaux sur le calcul serverless échouent si vous définissez une configuration Spark qui ne figure pas dans cette liste.

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.
  • 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.
  • Les clients Python qui utilisent des points de terminaison Databricks peuvent rencontrer des erreurs de vérification SSL telles que « CERTIFICATE_VERIFY_FAILED ». Pour contourner ces erreurs, configurez le client pour qu’il approuve le fichier d’autorité de certification situé dans /etc/ssl/certs/ca-certificates.crt. Par exemple, exécutez la commande suivante au début d’un notebook ou d’un travail serverless : import os; os.environ['SSL_CERT_FILE'] = '/etc/ssl/certs/ca-certificates.crt'
  • Les requêtes d’API inter-espaces de travail ne sont pas prises en charge.

Limitations du streaming

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, y compris les profils d’instance. 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 la version serverless que j’exécute ?

Les charges de travail serverless s’exécutent toujours sur la version la plus récente du runtime. Consultez les notes de publication de la version la plus récente.

Comment estimer les coûts pour serverless ?

Databricks recommande d’exécuter et d’évaluer une charge de travail représentative ou spécifique, puis d’analyser la table du système de facturation. Consultez la Référence de table système d’utilisation facturable.

Comment analyser l’utilisation de DBU pour une charge de travail spécifique ?

Pour voir le coût d’une charge de travail spécifique, interrogez la table système system.billing.usage. Consultez Surveiller le coût du calcul serverless pour obtenir des exemples de requêtes et télécharger notre tableau de bord d’observabilité des coûts.

Je n’ai pas activé le calcul serverless pour les flux de travail et les notebooks, pourquoi puis-je voir les enregistrements de facturation pour les flux de travail serverless ?

La supervision Lakehouse et l’optimisation prédictive sont également facturées sous la référence SKU de flux de travail serverless.

La préversion du calcul serverless n’a pas besoin d’être activée pour utiliser ces deux fonctionnalités.

Le calcul serverless prend-il en charge les dépôts privés ?

Les dépôts peuvent être privés ou nécessiter une authentification. Pour des raisons de sécurité, une URL pré-signée est requise lors de l’accès aux dépôts authentifiés.

Comment installer des bibliothèques pour mes tâches de travail ?

Databricks recommande d’utiliser des environnements pour installer et gérer des bibliothèques pour vos flux de travail. Consultez Configurer des environnements et des dépendances pour les tâches non-notebook.

Puis-je me connecter à des sources de données personnalisées ?

Non, seules les sources utilisant Lakehouse Federation sont prises en charge. Consultez Sources de données prises en charge.

Puis-je configurer le calcul serverless pour les flux de travail avec des DAB ?

Oui, les DAB peuvent être utilisés pour configurer des travaux qui utilisent le calcul serverless. Consultez Configurer une tâche qui utilise le calcul serverless.