알려진 제한 사항 Databricks Notebook
이 문서에서는 Databricks Notebook의 알려진 제한 사항에 대해 설명합니다. 추가 리소스 제한은 리소스 제한을 참조 하세요.
Notebook 크기
- 개별 Notebook 셀의 입력 제한은 6MB입니다.
- 수정 스냅샷 자동 저장, 가져오기, 내보내기 및 복제에 대한 최대 Notebook 크기는 10MB입니다.
- Notebook을 최대 32MB까지 수동으로 저장할 수 있습니다.
Notebook 결과 테이블
- 테이블 결과는 10K 행 또는 2MB 중 더 낮은 행으로 제한됩니다.
- 작업 클러스터의 최대 Notebook 출력 크기는 30MB입니다.
- 테이블 형식이 아닌 명령 결과에는 20MB 제한이 있습니다.
- 기본적으로 텍스트 결과는 최대 50,000자를 반환합니다. Databricks Runtime 12.2 LTS 이상을 사용하면 Spark 구성 속성을
spark.databricks.driver.maxReplOutputLength
설정하여 이 제한을 늘릴 수 있습니다.
Notebook 디버거
Notebook 디버거의 제한 사항:
- 디버거는 Python에서만 작동합니다. Scala 또는 R을 지원하지 않습니다.
- 디버거는 공유 액세스 모드 클러스터에서 작동하지 않습니다.
- 디버거는 외부 파일 또는 모듈로의 단계별 실행이 지원되지 않습니다.
- 디버그 세션이 활성화된 경우 Notebook에서 다른 명령을 실행할 수 없습니다.
SQL 웨어하우스 Notebook
SQL 웨어하우스 Notebook의 제한 사항:
- SQL 웨어하우스에 연결된 경우 실행 컨텍스트의 유휴 시간 제한은 8시간입니다.
ipywidgets
ipywidgets의 제한 사항:
- ipywidget을 사용하는 Notebook은 실행 중인 클러스터에 연결되어야 합니다.
- 위젯 상태는 Notebook 세션 간에 유지되지 않습니다. 클러스터에 Notebook을 연결할 때마다 위젯 셀을 렌더링하려면 위젯 셀을 다시 실행해야 합니다.
- 암호 및 컨트롤러 ipywidgets는 지원되지 않습니다.
- LaTeX 식을 사용하는 HTMLMath 및 레이블 위젯은 올바르게 렌더링되지 않습니다. (예를 들어
widgets.Label(value=r'$$\frac{x+1}{x-1}$$')
는 올바르게 렌더링되지 않습니다.) - 전자 필기장이 어두운 모드, 특히 색이 지정된 위젯인 경우 위젯이 올바르게 렌더링되지 않을 수 있습니다.
- 위젯 출력은 Notebook 대시보드 보기에서 사용할 수 없습니다.
- ipywidget의 최대 메시지 페이로드 크기는 5MB입니다. 이미지 또는 큰 텍스트 데이터를 사용하는 위젯은 제대로 렌더링되지 않을 수 있습니다.
Databricks 위젯
Databricks 위젯의 제한 사항:
Notebook에서 최대 512개의 위젯을 만들 수 있습니다.
위젯 이름은 1024자로 제한됩니다.
위젯 레이블은 2048자로 제한됩니다.
최대 2048자를 텍스트 위젯에 입력할 수 있습니다.
다중 선택, 콤보 상자 또는 드롭다운 위젯에 대해 최대 1024개의 선택 항목이 있을 수 있습니다.
코드에서 위젯을 지우거나 제거한 후에도 모두 실행을 누른 후에도 위젯 상태가 제대로 지워지지 않을 수 있는 알려진 문제가 있습니다. 이 경우 위젯의 시각적 개체와 인쇄된 상태 간에 불일치가 표시됩니다. 셀을 개별적으로 다시 실행하면 이 문제가 무시될 수 있습니다. 이 문제를 완전히 방지하려면 Databricks에서 ipywidgets를 사용하는 것이 좋습니다.
비동기 코드가 실행되는 동안 위젯 상태가 변경될 수 있으므로 스레드, 하위 프로세스 또는 구조적 스트리밍(foreachBatch)와 같은 비동기 컨텍스트에서 직접 위젯 상태에 액세스해서는 안 됩니다. 비동기 컨텍스트에서 위젯 상태에 액세스해야 하는 경우 인수로 전달합니다. 예를 들어 스레드를 사용하는 다음 코드가 있는 경우
import threading def thread_func(): # Unsafe access in a thread value = dbutils.widgets.get('my_widget') print(value) thread = threading.Thread(target=thread_func) thread.start() thread.join()
Databricks는 인수를 대신 사용하는 것이 좋습니다.
# Access widget values outside the asynchronous context and pass them to the function value = dbutils.widgets.get('my_widget') def thread_func(val): # Use the passed value safely inside the thread print(val) thread = threading.Thread(target=thread_func, args=(value,)) thread.start() thread.join()
위젯은 일반적으로 Notebook 내의 여러 언어 간에 인수를 전달할 수 없습니다. 한 번의 하나의 셀을 실행하는 경우 Python 셀에서 위젯
arg1
을 만들고 SQL 또는 Scala 셀에서 위젯을 사용할 수 있습니다. 그러나 모두 실행을 사용하거나 Notebook을 작업으로 실행하는 경우에는 작동하지 않습니다. 몇 가지 해결 방법은 다음과 같습니다.- 언어를 혼합하지 않는 Notebook의 경우 언어별로 Notebook을 만들고 Notebook을 실행할 때 인수를 전달할 수 있습니다.
spark.sql()
호출을 사용하여 위젯에 액세스할 수 있습니다. 예를 들어 Pythonspark.sql("select getArgument('arg1')").take(1)[0][0]
의 경우입니다.
Bamboolib
bamboolib의 제한 사항:
- 데이터 랭글링에 bamboolib를 사용하는 것은 약 1천만 개의 행으로 제한됩니다. 이 제한은 pandas 및 클러스터의 컴퓨팅 리소스를 기반으로 합니다.
- 데이터 시각화에 bamboolib를 사용하는 것은 약 10,000개의 행으로 제한됩니다. 이 제한은 플롯을 기반으로 합니다.