Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article couvre les limites connues des notebooks Databricks. Pour plus d’informations sur les limites de ressources, consultez Limites de ressources.
Dimensionnement du bloc-notes
- L’enregistrement automatique des instantanés de révision, l’enregistrement manuel et le clonage sont pris en charge pour tous les blocs-notes jusqu’à 100 Mo.
- L’importation et l’exportation sont prises en charge pour les notebooks IPYNB pouvant atteindre 100 Mo.
- L’importation et l’exportation sont prises en charge pour les notebooks DBC archive, HTML, R Markdown et source jusqu’à 10 Mo.
- Les cellules individuelles des notebooks ont une limite d’entrée de 6 Mo.
Sorties de cellule de bloc-notes
- Les résultats du tableau sont limités à 10 000 lignes ou 2 Mo, selon ce qui est inférieur.
- Les clusters de travail ont une taille maximale de sortie de notebook de 30 Mo.
- Dans Databricks Runtime 17.0 et versions ultérieures, et dans l’environnement sans serveur 3 :
- La taille maximale de sortie de cellule est par défaut de 10 Mo.
- Cette limite peut être personnalisée dans les cellules Python à n’importe quelle valeur comprise entre 1 Mo et 20 Mo (inclus) à l’aide de la magie de cellule suivante :
%set_cell_max_output_size_in_mb <size_in_MB>. Cette limite s’applique ensuite à toutes les cellules du bloc-notes. - Lorsque la sortie de cellule dépasse la limite de taille configurée, la sortie est tronquée pour s’adapter à la limite. La troncation est appliquée de manière à conserver autant de résultat utile que possible.
- Dans Databricks Runtime 16.4 LTS et versions ultérieures, dans l’environnement serverles 2 et ci-dessous :
- Les résultats du texte retournent un maximum de 50 000 caractères.
- Dans Databricks Runtime 12.2 et versions ultérieures, vous pouvez augmenter cette limite jusqu’à 20 Mo en définissant la propriété de configuration Spark.
spark.databricks.driver.maxReplOutputLength - Lorsque la sortie de cellule dépasse la limite de taille configurée, la sortie est entièrement ignorée.
Débogueur de notebook
Limitations du débogueur de notebook :
- Le débogueur fonctionne uniquement avec Python. Il ne prend pas en charge Scala ou R.
- Pour accéder au débogueur, votre notebook doit être connecté à l’une des ressources de calcul suivantes :
- Calcul sans serveur
- Calcul avec le mode d’accès défini sur Standard (anciennement partagé) dans Databricks Runtime 14.3 LTS et versions ultérieures
- Calcul avec le mode d’accès défini sur Dédié (anciennement utilisateur unique) dans Databricks Runtime 13.3 LTS et versions ultérieures
- Calcul avec le mode d’accès défini sur Aucune isolation partagée dans Databricks Runtime 13.3 LTS et versions ultérieures
- Le débogueur ne prend pas en charge l’exécution pas à pas dans les bibliothèques Python.
- Vous ne pouvez pas exécuter d’autres commandes dans le notebook lorsqu’une session de débogage est active.
- Le débogueur ne prend pas en charge le débogage sur les sous-processus lorsqu’il est connecté au calcul serverless ni aux clusters avec le mode d’accès défini sur Standard.
Notebooks d'entrepôt SQL
Limites des notebooks d'entrepôt SQL :
- Lorsqu’ils sont attachés à un entrepôt SQL, les contextes d’exécution ont un délai d’inactivité de 8 heures.
ipywidgets (un outil de widgets interactifs pour Python)
Limites des ipywidgets :
- Un notebook utilisant des ipywidgets doit être attaché à un cluster en cours d’exécution.
- Les états du widget ne sont pas conservés entre les sessions de notebook. Vous devez réexécuter des cellules de widget pour les afficher chaque fois que vous attachez le notebook à un cluster.
- Les ipywidgets Password et Controller ne sont pas pris en charge.
- Les widgets HTMLMath et Label avec des expressions LaTeX ne s’affichent pas correctement. (Par exemple,
widgets.Label(value=r'$$\frac{x+1}{x-1}$$')ne s’affiche pas correctement.) - Les widgets peuvent ne pas s’afficher correctement si le notebook est en mode sombre, en particulier les widgets colorés.
- Les sorties de widget ne peuvent pas être utilisées dans les affichages du tableau de bord du notebook.
- La taille maximale de la charge utile du message pour un ipywidget est de 5 Mo. Les widgets qui utilisent des images ou des données de texte volumineuses peuvent ne pas être correctement restitués.
Widgets Databricks
Limites des widgets Databricks :
Un maximum de 512 widgets peut être créé dans un notebook.
Les noms de widget sont limités à 1 024 caractères.
Les libellés de widget sont limités à 2 048 caractères.
Un maximum de 2 048 caractères peut être entré dans un widget de texte.
Il peut y avoir un maximum de 1 024 choix pour un widget de liste déroulante, de sélection multiple ou de liste déroulante.
Il existe un problème connu où l’état d’un widget peut ne pas s’effacer correctement après avoir appuyé sur Exécuter tout, même après avoir effacé ou supprimé le widget dans le code. Si cela se produit, vous verrez une différence entre le visuel du widget et les états imprimés. Ré-exécuter les cellules individuellement peut permettre de contourner ce problème. Pour éviter entièrement ce problème, Databricks vous recommande d’utiliser ipywidgets.
Vous ne devez pas accéder directement à l’état d’un widget dans des contextes asynchrones comme des threads, des sous-processus ou des flux structurés (foreachBatch), car l’état du widget peut changer pendant l’exécution du code asynchrone. Si vous devez accéder à l’état du widget dans un contexte asynchrone, transmettez-le en tant qu’argument. Par exemple, si vous avez le code suivant qui utilise des threads :
import threading def thread_func(): # Unsafe access in a thread value = dbutils.widgets.get('my_widget') print(value) thread = threading.Thread(target=thread_func) thread.start() thread.join()Databricks recommande d’utiliser un argument à la place :
# Access widget values outside the asynchronous context and pass them to the function value = dbutils.widgets.get('my_widget') def thread_func(val): # Use the passed value safely inside the thread print(val) thread = threading.Thread(target=thread_func, args=(value,)) thread.start() thread.join()Les widgets ne peuvent généralement pas passer d’arguments entre différentes langues au sein d’un bloc-notes. Vous pouvez créer un widget
arg1dans une cellule Python, et l’utiliser dans une cellule SQL ou Scala si vous exécutez une cellule à la fois. Mais cela ne fonctionne pas si vous utilisez la fonction Exécuter tout ou exécutez le notebook en tant que travail. Voici quelques solutions de contournement :- Pour les notebooks qui ne mélangent pas de langues, vous pouvez créer un notebook pour chaque langue et transmettre les arguments lorsque vous exécutez le notebook.
- Vous pouvez accéder au widget à l’aide d’un appel
spark.sql(). Par exemple, dans Python :spark.sql("select getArgument('arg1')").take(1)[0][0].