ipywidgets

ipywidget은 사용자가 Notebook 셀에서 매개 변수 값을 지정할 수 있게 해주는 시각적 요소입니다. ipywidget을 사용하여 Databricks Python Notebook을 대화형으로 만들 수 있습니다.

ipywidget 패키지에는 슬라이더, 텍스트 상자 및 확인란과 같은 양식 컨트롤뿐만 아니라 탭, 아코디언 및 그리드와 같은 레이아웃 컨트롤을 포함하여 30개가 넘는 컨트롤이 포함되어 있습니다. 이러한 요소를 사용하여 그래픽 사용자 인터페이스를 빌드하여 Notebook 코드와 인터페이스할 수 있습니다.

참고 항목

  • 클러스터가 지원하는 ipywidgets 버전을 확인하려면 클러스터의 Databricks Runtime 버전에 대한 릴리스 정보를 참조하세요.
  • 일부 ipywidgets는 Databricks Runtime 15.0에서 작동하지 않습니다.
  • Databricks 위젯에 대한 자세한 내용은 Databricks 위젯을 참조하세요. Databricks 위젯 또는 ipywidget을 사용하는 경우에 대한 지침은 ipywidget 및 Databricks 위젯 사용에 대한 모범 사례를 참조하세요.

요구 사항

  • ipywidgets는 Databricks Runtime 11.0에서 Databricks Runtime 12.2 LTS까지 미리 보기로 제공되며 일반적으로 Databricks Runtime 13.0 이상에서 사용할 수 있습니다. Unity 카탈로그 테이블에 대한 지원은 Databricks Runtime 12.2 LTS 이상에서 Unity 카탈로그 사용 클러스터에서 사용할 수 있습니다.
  • Databricks에서 ipywidgets를 사용하려면 브라우저에서 do기본 액세스할 databricks-dev-cloudfront.dev.databricks.com 수 있어야 합니다.

기본적으로 ipywidgets는 포트 6062를 사용합니다. Databricks Runtime 11.3 LTS 이상을 사용하면 Datadog와 같은 타사 통합과 충돌하는 경우 다음 Spark 구성을 사용하여 포트를 변경할 수 있습니다.

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

예시:

spark.databricks.driver.ipykernel.commChannelPort 1234

클러스터가 만들어질 때 Spark 구성을 설정해야 합니다.

사용

다음 코드는 3에서 10 사이의 값을 사용할 수 있는 슬라이더를 사용하여 히스토그램을 만듭니다. 위젯 값은 히스토그램의 계급구간 수를 결정합니다. 슬라이더를 움직이면 히스토그램이 즉시 업데이트됩니다. 이 작업을 시도하려면 ipywidgets 예제 Notebook을 참조하세요.

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)

다음 코드는 0에서 10 사이의 값을 사용할 수 있는 정수 슬라이더를 만듭니다. 기본 값은 5입니다. 코드에서 슬라이더의 값에 액세스하려면 int_slider.value를 사용합니다.

import ipywidgets as widgets

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

다음 코드는 Unity 카탈로그의 테이블에서 샘플 데이터 프레임을 로드하고 표시합니다. Unity 카탈로그 테이블에 대한 지원은 Unity 카탈로그 지원 클러스터에서 Databricks Runtime 12.1 이상에서 사용할 수 있습니다.

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)

Notebook 예제: ipywidgets

다음 Notebook에서는 Notebook에서 ipywidgets를 사용하는 몇 가지 예를 보여 줍니다.

ipywidget 예제 Notebook

전자 필기장 가져오기

Notebook 예제: ipywidgets 고급 예제

다음 Notebook에서는 ipywidgets를 사용하여 대화형 맵을 만드는 보다 복잡한 예제를 보여 있습니다.

고급 예제: ipywidget가 있는 맵

전자 필기장 가져오기

ipywidget 및 Databricks 위젯 사용을 위한 모범 사례

Python Notebook에 대화형 컨트롤을 추가하려면 ipywidget을 사용하는 것이 좋습니다. 다른 언어의 Notebook의 경우 Databricks 위젯을 사용합니다.

Databricks 위젯을 사용하여 Notebook 간에 매개 변수를 전달하고 매개 변수를 작업에 전달할 수 있습니다. ipywidget은 이러한 시나리오를 지원하지 않습니다.

Databricks에서 지원되는 타사 Jupyter 위젯은 무엇인가요?

Databricks는 ipyleaflet, bqplotVegaFusion과 같은 타사 위젯에 대한 최선의 지원을 제공합니다. 그러나 일부 타사 위젯은 지원되지 않습니다. Azure Databricks Notebook에서 테스트된 위젯 목록은 Azure Databricks 계정 팀에 문의하세요.

제한 사항

  • ipywidget을 사용하는 Notebook은 실행 중인 클러스터에 연결되어야 합니다.
  • 위젯 상태는 Notebook 세션 간에 유지되지 않습니다. 클러스터에 Notebook을 연결할 때마다 위젯 셀을 렌더링하려면 위젯 셀을 다시 실행해야 합니다.
  • 암호 및 컨트롤러 ipywidgets는 지원되지 않습니다.
  • LaTeX 식을 사용하는 HTMLMath 및 레이블 위젯은 올바르게 렌더링되지 않습니다. (예를 들어 widgets.Label(value=r'$$\frac{x+1}{x-1}$$')는 올바르게 렌더링되지 않습니다.)
  • 위젯이 어두운 모드인 경우 위젯이 제대로 렌더링되지 않을 수 있습니다(특히 색이 지정된 위젯).
  • 위젯 출력은 Notebook 대시보드 보기에서 사용할 수 없습니다.
  • ipywidget의 최대 메시지 페이로드 크기는 5MB입니다. 이미지 또는 큰 텍스트 데이터를 사용하는 위젯은 제대로 렌더링되지 않을 수 있습니다.