Aller au contenu principal

Limitations connues des Notebooks Databricks

Les notebooks Databricks présentent des limitations connues concernant la taille, les sorties de cellule, le débogueur, les sessions SQL Warehouse et les widgets. Pour connaître les autres limites de ressources, consultez les limites de ressources.

Taille du Notebook

  • La sauvegarde automatique des instantanés de révision, la sauvegarde manuelle et le clonage sont pris en charge pour tous les notebooks jusqu'à 100 Mo.
  • L’importation et l’exportation sont prises en charge pour les Notebooks IPYNB d’une taille maximale de 100 Mo.
  • L’importation et l’exportation sont prises en charge pour les archives DBC, HTML, R Markdown et les Notebooks source jusqu’à 10 Mo.
  • Les cellules individuelles du Notebook ont une limite d'entrée de 6 Mo.

Sorties de cellules de Notebook

  • Les résultats des tables sont limités à 10 000 lignes ou 2 Mo, la valeur la plus faible étant retenue.

  • Les clusters de Job ont une taille de sortie de Notebook maximale de 30 Mo.

  • Dans Databricks Runtime 17.0 et versions ultérieures, et Serverless environment 3 :

    • La taille maximale de sortie de cellule est de 10 Mo par default.
    • Cette limite peut être personnalisée dans les cellules Python à n'importe quelle valeur comprise entre 1 Mo et 20 Mo (inclusivement) à l'aide de la magie de cellule suivante : %set_cell_max_output_size_in_mb <size_in_MB>. Cette limite s'appliquera alors à toutes les cellules du Notebook.
    • Lorsque la sortie de cellule dépasse la limite de taille configurée, la sortie est tronquée pour s'adapter à cette limite. La troncation est appliquée de manière à préserver autant de sortie utile que possible.
  • Dans Databricks Runtime 16.4 LTS et versions antérieures, et environnement Serverless 2 et antérieurs :

    • Les résultats de texte renvoient 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 supprimée**.

Débogueur de Notebook

Limitations du débogueur de Notebook:

  • Le débogueur ne fonctionne qu’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 compute suivantes :

    • Compute serverless
    • Compute avec un mode d'accès défini sur Standard (anciennement partagé) dans Databricks Runtime 14.3 LTS et versions ultérieures
    • Compute avec un mode d’accès défini sur **Dédié** (anciennement utilisateur unique) dans Databricks Runtime 13.3 LTS et versions ultérieures
    • Compute avec le mode d'accès défini sur **Partagé sans isolation** dans Databricks Runtime 13.3 LTS et versions ultérieures
  • Le débogueur ne prend pas en charge l’accès aux bibliothèques Python.

  • Vous ne pouvez pas exécuter d'autres commandes dans le Notebook lorsqu'une session de débogage est active.

  • Le debugging ne prend pas en charge le debugging sur les sous-processus lorsqu'il est connecté à un compute serverless et aux clusters avec le mode d'accès défini sur Standard .

notebooks SQL Warehouse

Limitations des Notebooks SQL Warehouse:

  • Lorsqu'ils sont rattachés à un SQL warehouse, les contextes d'exécution ont un délai d'inactivité de 8 heures.

ipywidgets

Limites d’ ipywidgets:

  • Un Notebook utilisant des ipywidgets doit être attaché à un cluster en cours d'exécution.
  • Les états des widgets ne sont pas conservés d'une session de Notebook à l'autre. Vous devez réexécuter les cellules du widget pour les afficher chaque fois que vous associez le notebook à un cluster.
  • Les ipywidgets de mot de passe et de contrôleur 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 vues de tableau de bord de 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 textuelles volumineuses peuvent ne pas être correctement affichés.

Databricks widgets

Limitations des widgets Databricks:

  • Un maximum de 512 widgets peuvent être créés dans un notebook.

  • Le nom d'un widget est limité à 1 024 caractères.

  • Un libellé de widget est limité à 2 048 caractères.

  • Un maximum de 2 048 caractères peuvent être saisis dans un widget de texte.

  • Il peut y avoir un maximum de 1 024 choix pour un widget de sélection multiple, une zone de liste déroulante ou une liste déroulante.

  • Il existe un problème connu où l'état d'un widget peut ne pas être correctement effacé après avoir appuyé sur Tout exécuter , même après avoir effacé ou supprimé le widget dans le code. Si cela se produit, vous constaterez une divergence entre les états visuel et imprimé du widget. Réexécuter les cellules individuellement pourrait contourner ce problème. Pour éviter ce problème, Databricks recommande d'utiliser ipywidgets.

  • N’accédez pas directement à l’état du widget dans des contextes asynchrones tels que les threads, les sous-processus ou le Structured Streaming (foreachBatch), car l’état du widget peut changer pendant l’exécution du code asynchrone. Si vous avez besoin d'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 :

    Python
    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 plutôt :

    Python
    # 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 transmettre des arguments entre différentes langues au sein d'un Notebook. Vous pouvez créer un widget arg1 dans une cellule Python et l’utiliser dans une cellule SQL ou Scala si vous exécutez une cellule à la fois. Cependant, cela ne fonctionne pas si vous utilisez Tout exécuter ou exécutez le Notebook en tant que Job. Certaines solutions de contournement sont :

    • Pour les Notebooks qui ne mélangent pas les 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 en utilisant un appel spark.sql(). Par exemple, en Python : spark.sql("select getArgument('arg1')").take(1)[0][0].