Znane ograniczenia notesów usługi Databricks
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.
tabela wyników notatnika
- Wyniki tabeli są ograniczone do 10 000 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.
- Wyniki poleceń innych niż tabelaryczne mają limit 20 MB.
- Domyślnie wyniki tekstowe zwracają maksymalnie 50 000 znaków. W przypadku środowiska Databricks Runtime 12.2 LTS lub nowszego można zwiększyć ten limit, ustawiając właściwość konfiguracji platformy Spark
spark.databricks.driver.maxReplOutputLength
.
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
- Klaster z trybem dostępu ustawiony na pojedynczy użytkownik w środowisku Databricks Runtime 13.3 LTS lub nowszym
- Klaster z trybem dostępu ustawiony na Brak Izolacji Współdzielonej w Databricks Runtime 13.3 LTS lub nowszym.
- Klaster z trybem dostępu ustawionym na Udostępniony w środowisku Databricks Runtime 14.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.
- Debugger nie obsługuje debugowania w podprocesach, gdy jest połączony z bezserwerowymi zasobami obliczeniowymi oraz z klastrami z trybem dostępu ustawionym na "Udostępnione".
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]
.