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.
- Pour déterminer la version d'ipywidgets prise en charge par votre cluster, reportez-vous aux notes de publication pour la version de Databricks Runtime de votre cluster.
- Certains ipywidgets ne fonctionnent pas dans Databricks Runtime 15.0.
- Pour plus d'informations sur les widgets Databricks, consultez les widgets Databricks. Pour obtenir des conseils sur l'utilisation des widgets Databricks ou ipywidgets, consultez Bonnes pratiques pour l'utilisation des widgets ipywidgets et Databricks.
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.
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.
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.
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.