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
- Commandes API de mise en cache et SQL non prises en charge
- Vues temporaires globales non prises en charge
- CREATE FUNCTION (externe) non prise en charge
- Tables Hive SerDe non prises en charge
- Variables Hive non prises en charge
- Fonctions input_file dépréciées
- Modifications de comportement
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éfautEXCEPTION
)spark.sql.session.timeZone
(La valeur par défautEtc/UTC
)spark.sql.shuffle.partitions
(La valeur par défautauto
)
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 :
- df.cache(), df.persist()
- df.unpersist()
- spark.catalog.cacheTable()
- spark.catalog.uncacheTable()
- spark.catalog.clearCache()
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é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, 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 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
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
etsqlContext
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
- Les requêtes Streaming structuré nécessitent l’appel de
query.awaitTermination()
pour vérifier que la requête est terminée. - Il n’existe aucune prise en charge pour les intervalles de déclencheurs à durée définie ou par défaut. Seul
Trigger.AvailableNow
est pris en charge. Consultez Configurer des intervalles de déclencheur Structured Streaming. - Toutes les limitations du streaming sur le mode d’accès partagé s’appliquent également. Consultez Limitations de diffusion en continu pour le mode d’accès partagé à Unity Catalog.
Limitations du Machine Learning
- Databricks Runtime pour le Machine Learning et Apache Spark MLlib ne sont pas pris en charge.
- Les GPU ne sont pas pris en charge.
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 ?
- Comment déterminer la version serverless que j’exécute ?
- Comment estimer les coûts pour serverless ?
- Comment analyser l’utilisation de DBU pour une charge de travail spécifique ?
- 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 ?
- Le calcul serverless prend-il en charge les dépôts privés ?
- Comment installer des bibliothèques pour mes tâches de travail ?
- Puis-je me connecter à des sources de données personnalisées ?
- Puis-je configurer le calcul serverless pour les flux de travail avec des DAB ?
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.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de l’année 2024, nous abandonnerons progressivement le mécanisme de retour d’information GitHub Issues pour le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultez :Soumettre et afficher des commentaires pour