Известные ограничения записных книжек 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 паролей и контроллеров не поддерживаются.
- Мини-приложения 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.