Aller au contenu principal

Utiliser ipywidgets dans les Notebooks Databricks

Les ipywidgets sont des éléments visuels qui permettent aux utilisateurs de spécifier les valeurs de paramètres dans les cellules de notebook. Vous pouvez utiliser des ipywidgets pour rendre vos notebooks Python Databricks interactifs.

Le package ipywidgets comprend plus de 30 contrôles différents, y compris des contrôles de formulaire tels que des curseurs, des zones de texte et des cases à cocher, ainsi que des contrôles de Layout tels que des onglets, des accordéons et des grilles. À l'aide de ces éléments, vous pouvez créer des interfaces utilisateur graphiques pour interagir avec le code de votre notebook.

remarque

Exigences

  • Les ipywidgets sont disponibles en préversion dans Databricks Runtime 11.0 jusqu'à Databricks Runtime 12.2 LTS, et sont généralement disponibles dans Databricks Runtime 13.0 et les versions ultérieures. La prise en charge des tables Unity Catalog est disponible dans Databricks Runtime 12.1 et versions ultérieures sur les clusters compatibles Unity Catalog.
  • Pour utiliser les ipywidgets sur Databricks, votre navigateur doit pouvoir accéder au domaine databricks-dev-cloudfront.dev.databricks.com.

By default, ipywidgets occupe le port 6062. Avec Databricks Runtime 11.3 LTS et versions ultérieures, si vous rencontrez des conflits avec des intégrations tierces telles que Datadog, vous pouvez modifier le port à l’aide de la configuration Spark suivante :

spark.databricks.driver.ipykernel.commChannelPort <port-number>

Par exemple :

spark.databricks.driver.ipykernel.commChannelPort 1234

La configuration Spark doit être définie lors de la création du cluster.

Utilisation

Le code suivant crée un histogramme avec un curseur qui peut prendre des valeurs entre 3 et 10. La valeur du widget détermine le nombre de compartiments dans l'histogramme. Lorsque vous déplacez le curseur, l'histogramme se met à jour immédiatement. Consultez l'exemple de notebook ipywidgets pour l'essayer.

Python
import ipywidgets as widgets
from ipywidgets import interact

# Load a dataset
sparkDF = spark.read.csv("/databricks-datasets/bikeSharing/data-001/day.csv", header="true", inferSchema="true")

# In this code, `(bins=(3, 10)` defines an integer slider widget that allows values between 3 and 10.
@interact(bins=(3, 10))
def plot_histogram(bins):
pdf = sparkDF.toPandas()
pdf.hist(column='temp', bins=bins)

Le code suivant crée un curseur d'entiers qui peut prendre des valeurs entre 0 et 10. La valeur par default est de 5. Pour accéder à la valeur du curseur dans votre code, utilisez int_slider.value.

Python
import ipywidgets as widgets

int_slider = widgets.IntSlider(max=10, value=5)
int_slider

Le code suivant charge et affiche un exemple de dataframe à partir d'une table dans Unity Catalog. La prise en charge des tables Unity Catalog est disponible avec Databricks Runtime 12.1 et versions ultérieures sur les clusters compatibles avec Unity Catalog.

Python
import ipywidgets as widgets

# Create button widget. Clicking this button loads a sampled dataframe from UC table.
button = widgets.Button(description="Load dataframe sample")

# Output widget to display the loaded dataframe
output = widgets.Output()

def load_sample_df(table_name):
return spark.sql(f"SELECT * FROM {table_name} LIMIT 1000")

def on_button_clicked(_):
with output:
output.clear_output()
df = load_sample_df('<catalog>.<schema>.<table>')
print(df.toPandas())

# Register the button's callback function to query UC and display results to the output widget
button.on_click(on_button_clicked)

display(button, output)

Exemple de Notebook : ipywidgets

Le notebook suivant présente quelques exemples d'utilisation d'ipywidgets dans des notebooks.

Notebook d'exemple ipywidgets

Exemple de Notebook : exemple avancé d’ipywidgets

Le notebook suivant présente un exemple plus complexe utilisant ipywidgets pour créer une carte interactive.

Exemple avancé : cartes avec ipywidgets

Bonnes pratiques pour l'utilisation des widgets ipywidgets et Databricks

Pour ajouter des contrôles interactifs aux Notebooks Python, Databricks recommande d'utiliser ipywidgets. Pour les Notebooks dans d'autres langues, utilisez les widgets Databricks.

Vous pouvez utiliser les widgets Databricks pour passer des parameters entre les notebooks et pour passer des parameters aux Jobs ; les ipywidgets ne prennent pas en charge ces scénarios.

Quels widgets Jupyter tiers sont pris en charge dans Databricks ?

Databricks fournit un support de son mieux pour les widgets tiers, tels que ipyleaflet, bqplot et VegaFusion. Cependant, certains widgets tiers ne sont pas pris en charge. Pour obtenir la liste des widgets testés dans les notebooks Databricks, contactez l'équipe de votre compte Databricks.

Limitations

Consultez les limites connues des Notebooks Databricks pour plus d'informations.