Поделиться через


Известные ограничения записных книжек Databricks

В этой статье рассматриваются известные ограничения записных книжек Databricks. Дополнительные ограничения ресурсов см. в разделе "Ограничения ресурсов".

Размер записной книжки

  • Отдельные ячейки записной книжки имеют ограничение ввода в 6 МБ.
  • Максимальный размер записной книжки для моментальных снимков редакции автосохранения, импорта, экспорта и клонирования составляет 10 МБ.
  • Вы можете вручную сохранять записные книжки размером до 32 МБ.

Таблица результатов записной книжки

  • Результаты таблицы ограничены 10K строками или 2 МБ, в зависимости от того, что ниже.
  • Кластеры заданий имеют максимальный размер выходных данных записной книжки размером 30 МБ.
  • Результаты не табличных команд имеют ограничение в 20 МБ.
  • По умолчанию результаты текста возвращают не более 50 000 символов. С помощью Databricks Runtime 12.2 LTS и более поздних версий можно увеличить это ограничение, задав свойство spark.databricks.driver.maxReplOutputLengthконфигурации Spark.

Отладчик записной книжки

Ограничения отладчика записной книжки:

  • Отладчик работает только с Python. Она не поддерживает Scala или R.
  • Отладчик не работает в кластерах режима общего доступа.
  • Отладчик не поддерживает пошаговое переход к внешним файлам или модулям.
  • Не удается выполнить другие команды в записной книжке при активном сеансе отладки.

Записные книжки хранилища SQL

Ограничения записных книжек хранилища SQL:

  • При подключении к хранилищу SQL контексты выполнения используют тайм-аут простоя в 8 часов.

ipywidgets

Ограничения ipywidgets:

  • Записная книжка с ipywidgets должна быть подключена к работающему кластеру.
  • Состояния мини-приложений не сохраняются между сеансами записной книжки. Вам придется повторно запускать ячейки мини-приложений, чтобы отображать их при каждом подключении записной книжки к кластеру.
  • Ipywidgets паролей и контроллеров не поддерживаются.
  • Мини-приложения HTMLMath (математика в HTML) и Label (метка) с выражениями LaTeX отображаются неправильно. (Например, неверно отображается widgets.Label(value=r'$$\frac{x+1}{x-1}$$').)
  • Мини-приложения могут не отображаться правильно, если записная книжка находится в темном режиме, особенно цветные мини-приложения.
  • Выходные данные мини-приложения нельзя использовать в представлениях панели мониторинга записной книжки.
  • Максимальный размер полезных данных сообщения для ipywidget составляет 5 МБ. Мини-приложения, использующие изображения или большие текстовые данные, могут отображаться неправильно.

Мини-приложения Databricks

Ограничения мини-приложений Databricks:

  • В записной книжке можно создать не более 512 мини-приложений.

  • Имя мини-приложения ограничено 1024 символами.

  • Метка мини-приложения ограничена 2048 символами.

  • Максимум 2048 символов можно ввести в текстовое мини-приложение.

  • Для нескольких выборов, полей со списком или раскрывающегося списка может быть не более 1024.

  • Существует известная проблема, из-за которой состояние мини-приложения может неправильно очиститься после нажатия клавиши Run All, даже после очистки или удаления мини-приложения в коде. В этом случае вы увидите несоответствие между визуальным и печатным состояниями мини-приложения. Повторное выполнение ячеек по отдельности может обойти эту проблему. Чтобы избежать этой проблемы, 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()
    
  • Мини-приложения обычно не могут передавать аргументы между различными языками в записной книжке. Вы можете создать мини-приложение arg1 в ячейке Python и использовать его в ячейке SQL или Scala при одновременном запуске одной ячейки. Однако это не работает, если вы используете команду "Выполнить все" или запустить записную книжку в качестве задания. Ниже приведены некоторые обходные пути.

    • Для записных книжек, не смешивающих языки, можно создать записную книжку для каждого языка и передать аргументы при запуске записной книжки.
    • Вы можете получить доступ к мини-приложению spark.sql() с помощью вызова. Например, в Python: spark.sql("select getArgument('arg1')").take(1)[0][0]

Бамбуклиб

Ограничения бамбуклиба:

  • Использование bamboolib для обработки данных ограничено примерно 10 миллионами строк. Это ограничение определяется pandas и вычислительными ресурсами кластера.
  • Использование bamboolib для визуализаций данных ограничено примерно 10 тысячами строк. Это ограничение определяется plotly.