Udostępnij za pośrednictwem


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.maxReplOutputLengthkonfiguracji 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

Ograniczenia 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.