ipywidgets

ipywidgets to elementy wizualne, które umożliwiają użytkownikom określanie wartości parametrów w komórkach notesu. Możesz użyć widżetów ipywidgets, aby twoje notesy Python usługi Databricks mogły być interaktywne.

Pakiet widżetów ipywidgets zawiera ponad 30 różnych kontrolek, w tym kontrolki formularzy, takie jak suwaki, pola tekstowe i pola wyboru, a także kontrolki układu, takie jak kontrolki accordion, widżety Ipwidgets i siatki. Korzystając z tych elementów, można tworzyć graficzne interfejsy użytkownika na potrzeby interakcji z kodem Twojego notesu.

Uwaga

  • Aby określić wersję serwerów ipywidget obsługiwaną przez klaster, zapoznaj się z informacjami o wersji dla wersji środowiska Databricks Runtime klastra.
  • Niektóre adresy ipywidget nie działają w środowisku Databricks Runtime 15.0.
  • Aby uzyskać informacje na temat widżetów usługi Databricks, zobacz Widżety usługi Databricks. Aby uzyskać wskazówki dotyczące używania widżetów usługi Databricks lub widżetów ipywidgets, zobacz Najlepsze rozwiązania dotyczące korzystania z widżetów ipywidgets i Databricks.

Wymagania

  • Usługa ipywidgets jest dostępna w wersji zapoznawczej w środowisku Databricks Runtime 11.0 za pośrednictwem środowiska Databricks Runtime 12.2 LTS i są ogólnie dostępne w środowisku Databricks Runtime 13.0 lub nowszym. Obsługa tabel wykazu aparatu Unity jest dostępna w środowisku Databricks Runtime 12.2 LTS i nowszym w klastrach z obsługą wykazu aparatu Unity.
  • Aby używać adresów ipywidgets w usłudze Databricks, przeglądarka musi mieć dostęp do databricks-dev-cloudfront.dev.databricks.com domeny.

Domyślnie ipywidgets zajmuje port 6062. W przypadku środowiska Databricks Runtime 11.3 LTS lub nowszego, jeśli wystąpią konflikty z integracją innych firm, takimi jak Datadog, możesz zmienić port przy użyciu następującej konfiguracji platformy Spark:

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

Na przykład:

spark.databricks.driver.ipykernel.commChannelPort 1234

Po utworzeniu klastra należy ustawić konfigurację platformy Spark.

Użycie

Poniższy kod tworzy histogram z suwakiem, który może przyjmować wartości z zakresu od 3 do 10. Wartość widżetu określa liczbę pojemników na histogramie. Po przeniesieniu suwaka histogram zostanie natychmiast zaktualizowany. Zobacz przykładowy notes ipywidgets, aby wypróbować ten notes .

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)

Poniższy kod tworzy suwak liczby całkowitej, który może przyjmować wartości z zakresu od 0 do 10. Domyślna wartość wynosi 5. Aby uzyskać dostęp do wartości suwaka w kodzie, użyj polecenia int_slider.value.

import ipywidgets as widgets

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

Poniższy kod ładuje i wyświetla przykładową ramkę danych z tabeli w wykazie aparatu Unity. Obsługa tabel wykazu aparatu Unity jest dostępna w przypadku środowiska Databricks Runtime 12.1 lub nowszego w klastrach z obsługą wykazu aparatu 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)

Przykład notesu: ipywidgets

W poniższym notesie przedstawiono kilka przykładów użycia funkcji ipywidgets w notesach.

przykładowy notes ipywidgets

Pobierz notes

Przykład notesu: przykład zaawansowany ipywidgets

Poniższy notes przedstawia bardziej złożony przykład tworzenia interaktywnej mapy przy użyciu interfejsów ipywidgets.

Zaawansowany przykład: mapy z adresami ipywidgets

Pobierz notes

Najlepsze rozwiązania dotyczące używania widżetów ipywidgets i Databricks

Aby dodać interaktywne kontrolki do notesów języka Python, usługa Databricks zaleca używanie poleceń ipywidgets. W przypadku notesów w innych językach użyj widżetów usługi Databricks.

Widżety usługi Databricks umożliwiają przekazywanie parametrów między notesami i przekazywanie parametrów do zadań. Te scenariusze nie obsługują obiektów ipywidgets.

Które widżety Jupyter innych firm są obsługiwane w usłudze Databricks?

Usługa Databricks zapewnia najlepszą obsługę widżetów innych firm, takich jak ipyleaflet, bqplot i VegaFusion. Jednak niektóre widżety innych firm nie są obsługiwane. Aby uzyskać listę widżetów przetestowanych w notesach usługi Azure Databricks, skontaktuj się z zespołem konta usługi Azure Databricks.

Ograniczenia

  • Do uruchomionego klastra musi być dołączony notes używający polecenia ipywidgets.
  • Stany widżetów nie są zachowywane między sesjami notesu. Aby były renderowane przy każdym dołączeniu notesu do klastra, należy ponownie uruchomić komórki widżetów.
  • Hasła i kontroler ipywidgets nie są obsługiwane.
  • Widżety HTMLMath i Etykieta z wyrażeniami LaTeX nie są poprawnie renderowane. (Na przykład widgets.Label(value=r'$$\frac{x+1}{x-1}$$') nie renderuje się poprawnie).
  • Widżety mogą nie być poprawnie renderowane, jeśli notes jest w trybie ciemnym, zwłaszcza kolorowymi widżetami.
  • Danych wyjściowych widżetu nie można używać w widokach pulpitu nawigacyjnego notesu.
  • Maksymalny rozmiar ładunku komunikatu dla adresu ipywidget wynosi 5 MB. Widżety korzystające z obrazów lub dużych danych tekstowych mogą nie być poprawnie renderowane.