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 notesu 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 notesu
- 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ść
spark.databricks.driver.maxReplOutputLength
konfiguracji platformy Spark.
Debuger notesu
Ograniczenia debugera notesu:
- Debuger działa tylko z językiem Python. Nie obsługuje języka Scala ani R.
- Debuger nie działa w klastrach trybu dostępu współdzielonego .
- 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.
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.
- 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.
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 wieloelektowego, pola kombi lub widżetu listy rozwijanej.
Istnieje znany problem polegający na tym, że stan widżetu może nie być prawidłowo wyczyszczany po naciśnięciu przycisku 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]
.
Bamboolib
Ograniczenia biblioteki bamboolib:
- Używanie biblioteki bamboolib do uzdatniania danych jest ograniczone do około 10 milionów wierszy. Ten limit jest oparty na bibliotece pandas i zasobach obliczeniowych klastra.
- Używanie biblioteki bamboolib do wizualizacji danych jest ograniczone do około 10 tysięcy wierszy. Ten limit jest oparty na wykresie.