Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano znane ograniczenia notesów usługi Databricks. Aby uzyskać dodatkowe limity zasobów, zobacz Limity zasobów.
Ustalanie rozmiaru notesu
- Poszczególne komórki notatnika mają limit danych wejściowych wynoszący 6 MB.
- Maksymalny rozmiar notesu dla migawek poprawek autosaving, importowania, eksportowania i klonowania wynosi 10 MB.
- Notesy można zapisywać ręcznie do 32 MB.
Dane wyjściowe z komórki notebooka
- Wyniki tabeli są ograniczone do 10 K wierszy lub 2 MB, w zależności od tego, co jest niższe.
- Klastry zadań mają maksymalny rozmiar danych wyjściowych notesu wynoszący 30 MB.
- W środowisku Databricks Runtime 17.0 lub nowszym:
- Maksymalny rozmiar danych wyjściowych komórki domyślnie wynosi 10 MB.
- Ten limit można dostosować w komórkach języka Python do dowolnej wartości z zakresu od 1 MB do 20 MB (włącznie), używając następującej magii komórki:
%set_cell_max_output_size_in_mb <size_in_MB>
. Ten limit będzie następnie stosowany do wszystkich komórek w notesie. - Gdy dane wyjściowe komórki przekraczają skonfigurowany limit rozmiaru, dane wyjściowe są obcinane w celu dopasowania do limitu. Skracanie jest stosowane tak, aby zachować jak najwięcej przydatnych wyników.
- W środowisku Databricks Runtime 16.4 LTS i poniżej:
- Wyniki tekstowe zwracają maksymalnie 50 000 znaków.
- W środowisku Databricks Runtime 12.2 lub nowszym można zwiększyć ten limit do 20 MB, ustawiając właściwość konfiguracji platformy Spark.
spark.databricks.driver.maxReplOutputLength
- Gdy dane wyjściowe komórki przekraczają skonfigurowany limit rozmiaru, dane wyjściowe zostaną całkowicie odrzucone.
Debuger notesu
Ograniczenia debugera notesu:
- Debuger działa tylko z językiem Python. Nie obsługuje języka Scala ani R.
- Aby uzyskać dostęp do debugera, notes musi być połączony z jednym z następujących zasobów obliczeniowych:
- obliczenia bezserwerowe
- Środowisko obliczeniowe z trybem dostępuustawionym na standard (wcześniej udostępnione) w środowisku Databricks Runtime 14.3 LTS lub nowszym
- Obliczenia z trybem dostępu ustawionym na Dedykowane (wcześniej znane jako tryb pojedynczego użytkownika) w Databricks Runtime 13.3 LTS lub nowszym
- Obliczenia z trybem dostępu ustawionym na Bez izolacji udostępnionej w Databricks Runtime 13.3 LTS lub nowszym.
- Debuger nie obsługuje przechodzenia do plików zewnętrznych ani modułów.
- Nie można uruchomić innych poleceń w notesie, gdy sesja debugowania jest aktywna.
- Debuger nie obsługuje debugowania w podprocesach w przypadku połączenia z bezserwerowymi obliczeniami i klastrami z trybem dostępu ustawionym na Standardowa.
Notesy usługi SQL Warehouse
Ograniczenia notesów usługi SQL Warehouse:
- W przypadku dołączenia do usługi SQL Warehouse konteksty wykonywania mają limit czasu bezczynności przez 8 godzin.
ipywidgets
- 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.
- Wyników widżetu nie można wykorzystywać w widokach pulpitu nawigacyjnego notatnika.
- 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.
Widżety usługi Databricks
Ograniczenia widżetów usługi Databricks:
W notesie można utworzyć maksymalnie 512 widżetów.
Nazwa widżetu jest ograniczona do 1024 znaków.
Etykieta widżetu jest ograniczona do 2048 znaków.
Do widżetu tekstowego można wprowadzić maksymalnie 2048 znaków.
Można wybrać maksymalnie 1024 opcje dla pola wielokrotnego wyboru, kombi lub listy rozwijanej widżetu.
Istnieje znany problem polegający na tym, że stan widżetu może nie być prawidłowo wyczyszczany po naciśnięciu Uruchom wszystko, nawet po wyczyszczeniu lub usunięciu widżetu w kodzie. W takim przypadku zostanie wyświetlona rozbieżność między wizualizacją widżetu a stanami drukowanymi. Ponowne uruchomienie komórek osobno może obejść ten problem. Aby całkowicie uniknąć tego problemu, usługa Databricks zaleca używanie modułów ipywidgets.
Nie należy uzyskiwać dostępu do stanu widżetu bezpośrednio w kontekstach asynchronicznych, takich jak wątki, podprocesy lub przesyłanie strumieniowe ze strukturą (foreachBatch), ponieważ stan widżetu może ulec zmianie, gdy kod asynchroniczny jest uruchomiony. Jeśli musisz uzyskać dostęp do stanu widżetu w kontekście asynchronicznym, przekaż go jako argument. Jeśli na przykład masz następujący kod, który używa wątków:
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()
Usługa Databricks zaleca zamiast tego użycie argumentu:
# 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()
Widżety nie mogą zwykle przekazywać argumentów między różnymi językami w notesie. Widżet można utworzyć
arg1
w komórce języka Python i użyć go w komórce SQL lub Scala, jeśli jednocześnie uruchomisz jedną komórkę. Nie działa to jednak w przypadku użycia polecenia Uruchom wszystko lub uruchomienia notesu jako zadania. Oto kilka obejść:- W przypadku notesów, które nie mieszają języków, można utworzyć notes dla każdego języka i przekazać argumenty podczas uruchamiania notesu.
- Dostęp do widżetu można uzyskać przy użyciu wywołania
spark.sql()
. Na przykład w języku Python:spark.sql("select getArgument('arg1')").take(1)[0][0]
.