Compartir a través de


ipywidgets

Los ipywidgets son elementos visuales que permiten a los usuarios especificar valores de parámetros en las celdas del cuaderno. Puede usar ipywidgets para que los cuadernos de Python de Databricks sean interactivos.

El paquete de ipywidgets incluye más de 30 controles diferentes, incluidos controles de formulario como controles deslizantes, cuadros de texto y casillas, así como controles de diseño como pestañas, acordeones y cuadrículas. Con estos elementos, puede crear interfaces gráficas de usuario para interactuar con el código del cuaderno.

Nota:

Requisitos

  • ipywidgets están disponibles en versión preliminar en Databricks Runtime 11.0 a Databricks Runtime 12.2 LTS y, además, están disponibles con carácter general en Databricks Runtime 13.0 y versiones posteriores. La compatibilidad con las tablas de Unity Catalog está disponible en Databricks Runtime 12.2 LTS y versiones posteriores en clústeres habilitados para Unity Catalog.
  • Para usar ipywidgets en Databricks, el explorador debe poder acceder al dominio databricks-dev-cloudfront.dev.databricks.com.

De manera predeterminada, ipywidgets ocupa el puerto 6062. Con Databricks Runtime 11.3 LTS y versiones posteriores, si tiene conflictos con integraciones de terceros como Datadog, puede cambiar el puerto mediante el siguiente configuración de Spark:

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

Por ejemplo:

spark.databricks.driver.ipykernel.commChannelPort 1234

La configuración de Spark se debe establecer al crear el clúster.

Uso

El código siguiente crea un histograma con un control deslizante que puede tomar valores entre 3 y 10. El valor del widget determina el número de intervalos del histograma. A medida que mueva el control deslizante, el histograma se actualiza inmediatamente. Consulte el cuaderno de ejemplo ipywidgets para probarlo.

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)

El código siguiente crea un control deslizante entero que puede tomar valores entre 0 y 10. El valor predeterminado es 5. Para acceder al valor del control deslizante en el código, use int_slider.value.

import ipywidgets as widgets

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

El código siguiente carga y muestra un dataframe de ejemplo de una tabla en el catálogo de Unity. La compatibilidad con las tablas del catálogo de Unity está disponible con Databricks Runtime 12.1 y versiones posteriores en clústeres habilitados para el catálogo de Unity.

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)

Ejemplo de Notebook: ipywidgets

En el cuaderno siguiente se muestran algunos ejemplos de uso de ipywidgets en cuadernos.

Cuaderno de ejemplo de ipywidgets

Obtener el cuaderno

Ejemplo de Notebook: ejemplo avanzado de ipywidgets

En el cuaderno siguiente se muestra un ejemplo más complejo mediante ipywidgets para crear un mapa interactivo.

Ejemplo avanzado: mapas con ipywidgets

Obtener el cuaderno

Procedimientos recomendados para usar ipywidgets y widgets de Databricks

Para agregar controles interactivos a los cuadernos de Python, Databricks recomienda usar ipywidgets. Para cuadernos de otros lenguajes, use widgets de Databricks.

Puede usar widgets de Databricks para pasar parámetros entre cuadernos y para pasar parámetros a los trabajos; ipywidgets no admite estos escenarios.

¿Qué widgets de Jupyter de terceros se admiten en Databricks?

Databricks proporciona la mejor compatibilidad con widgets de terceros, como ipyleaflet, bqplot y VegaFusion. Sin embargo, no se admiten algunos widgets de terceros. Para ver una lista de los widgets que se han probado en cuadernos de Azure Databricks, póngase en contacto con el equipo de la cuenta de Azure Databricks.

Limitaciones

  • Un cuaderno que use ipywidgets se debe conectar a un clúster en ejecución.
  • Los estados del widget no se conservan entre sesiones del cuaderno. Debe volver a ejecutar las celdas de widget para representarlas cada vez que conecte el cuaderno a un clúster.
  • Los ipywidgets Contraseña y Controlador no son compatibles.
  • Los widgets HTMLMath y Label con expresiones LaTeX no se representan correctamente. (Por ejemplo, widgets.Label(value=r'$$\frac{x+1}{x-1}$$') no se representa correctamente).
  • Es posible que los widgets no se represente correctamente si el cuaderno está en modo oscuro, especialmente los widgets con colores.
  • Las salidas del widget no se pueden usar en las vistas del panel del cuaderno.
  • El tamaño máximo de la carga del mensaje de un ipywidget es de 5 MB. Es posible que los widgets que usan imágenes o datos de texto de gran tamaño no se representen correctamente.