Заметки о выпуске бессерверных вычислений
В этой статье описываются функции и поведение, которые в настоящее время доступны и предстоящие на бессерверных вычислительных ресурсах для записных книжек и заданий.
Дополнительные сведения о бессерверных вычислениях см. в разделе "Подключение к бессерверным вычислениям".
Databricks периодически выпускает обновления бессерверных вычислений, автоматически обновляя бессерверную среду выполнения вычислений для поддержки улучшений и обновлений на платформу. Все пользователи получают одинаковые обновления, развертываются в течение короткого периода времени.
Предстоящие изменения поведения
В этом разделе рассматриваются изменения поведения, поступающие в следующую бессерверную версию вычислений. После отправки изменений в рабочую среду они будут добавлены в заметки о выпуске.
Сентябрь 2024 г.
Изменение привязки схемы для представлений
Когда типы данных в базовом запросе представления изменяются с тех, которые используются при первом создании представления, Databricks больше не будет вызывать ошибки для ссылок на представление, когда не может быть выполнено безопасное приведение. Вместо этого представление компенсирует использование правил приведения по возможности.
Это изменение позволяет Databricks более легко терпеть изменения схемы таблицы.
Запретить недокументированную !
синтаксическую терпимость для NOT
внешней логическое логики
Databricks больше не допускает использование в качестве синонима !
за NOT
пределами логического логики. Например:
CREATE ... IF ! EXISTS
, IS ! NULL, ! NULL
свойство столбца или поля и ! IN
! Между ними необходимо заменить следующее:
CREATE ... IF NOT EXISTS
, IS NOT NULL
NOT NULL
столбец или свойство поля и NOT IN
NOT BETWEEN
.
Это изменение уменьшает путаницу, соответствует стандарту SQL и делает SQL более переносимым.
Логический оператор !
префикса (например!is_mgr
, или!(true AND false)
) не влияет на это изменение.
Запретить незадокументированные и необработанные части синтаксиса определения столбца в представлениях
Databricks поддерживает CREATE VIEW с именованными столбцами и комментариями столбцов.
Спецификация типов столбцов, NOT NULL
ограничений или DEFAULT
допускается в синтаксисе без каких-либо последствий.
Databricks удалит эту синтаксическую терпимость.
Это снижает путаницу, соответствует стандарту SQL и обеспечивает будущие улучшения.
Заметки о выпуске
В этом разделе содержатся заметки о выпуске бессерверных вычислений. Заметки о выпуске организованы по годам и неделям года. Бессерверные вычисления всегда выполняются с помощью последней выпущенной версии, указанной здесь.
JDK обновляется с JDK 8 до JDK 17
15 августа 2024 г.
Бессерверные вычисления для записных книжек и рабочих процессов перенесены из пакета разработки Java (JDK) 8 в JDK 17 на стороне сервера. Это обновление включает следующие изменения поведения:
Исправления ошибок
Правильный анализ шаблонов regex с отрицанием в вложенной группировке символов. С помощью этого обновления Azure Databricks теперь поддерживает правильный анализ шаблонов regex с отрицанием в вложенной группировке символов. Например, [^[abc]]
будет проанализирован как "любой символ, который не является одним из "abc".
Кроме того, поведение Фотона было несогласовано с Spark для вложенных классов символов. Шаблоны regex, содержащие вложенные классы символов, больше не будут использовать Photon, а вместо этого будут использовать Spark. Вложенный класс символов — это любой шаблон, содержащий квадратные скобки в квадратных скобках, например [[a-c][1-3]]
.
Версия 2024.30
23 июля 2024 г.
Этот бессерверный выпуск вычислений примерно соответствует Databricks Runtime 15.1
Новые возможности
Поддержка синтаксиса star (*
) в WHERE
предложении: теперь можно использовать синтаксис звезды (*
) в WHERE
предложении, чтобы ссылаться на все столбцы из SELECT
списка.
Например, SELECT * FROM VALUES(1, 2) AS T(a1, a2) WHERE 1 IN(T.*)
.
Изменения
Улучшено восстановление ошибок для синтаксического анализа JSON: средство синтаксического анализа JSON, используемое для from_json()
выражений пути JSON, теперь восстанавливается быстрее из неправильно сформированного синтаксиса, что приводит к снижению потери данных.
При обнаружении неправильно сформированного синтаксиса JSON в поле структуры, значении массива, ключа карты или значения карты средство синтаксического анализа JSON теперь возвращается NULL
только для непрочитаемого поля, ключа или элемента. Последующие поля, ключи или элементы будут правильно проанализированы. До этого изменения средство синтаксического анализа JSON отказался от анализа массива, структуры или карты и вернулся для оставшегося NULL
содержимого.
Версия 2024.15
15 апреля 2024 г.
Это исходная версия бессерверных вычислений. Эта версия примерно соответствует Databricks Runtime 14.3 с некоторыми изменениями, которые удаляют поддержку некоторых несерверных и устаревших функций.
Поддерживаемые параметры конфигурации Spark
Чтобы автоматизировать настройку Spark на бессерверных вычислениях, Databricks удалила поддержку ручной настройки большинства конфигураций Spark. Можно вручную задать только следующие параметры конфигурации Spark:
spark.sql.legacy.timeParserPolicy
(значение по умолчанию —EXCEPTION
);spark.sql.session.timeZone
(значение по умолчанию —Etc/UTC
);spark.sql.shuffle.partitions
(значение по умолчанию —auto
);spark.sql.ansi.enabled
(значение по умолчанию —true
);
Выполнение задания на бессерверных вычислениях завершится ошибкой, если вы настроили конфигурацию Spark, которая не находится в этом списке.
Дополнительные сведения о настройке свойств Spark см. в разделе "Настройка свойств конфигурации Spark" в Azure Databricks.
Кэширование API и команд SQL не поддерживаются
Использование API-интерфейсов кадра данных и кэша SQL не поддерживается. Использование любого из этих API или команд SQL приведет к исключению.
Неподдерживаемые API:
- df.cache(), df.persist()
- df.unpersist()
- spark.catalog.cacheTable()
- spark.catalog.uncacheTable()
- spark.catalog.clearCache()
Неподдерживаемые команды SQL:
Глобальные временные представления не поддерживаются
Создание глобальных временных представлений не поддерживается. Использование любой из этих команд приведет к исключению:
Вместо этого Databricks рекомендует использовать временные представления сеанса или создавать таблицы, в которых требуется передача данных между сеансами.
CREATE FUNCTION (External) не поддерживается
Команда CREATE FUNCTION (External) не поддерживается. Использование этой команды приводит к исключению.
Вместо этого Databricks рекомендует использовать CREATE FUNCTION (SQL и Python) для создания определяемых пользователем пользователей.
Таблицы Hive SerDe не поддерживаются
Таблицы Hive SerDe не поддерживаются. Кроме того, соответствующая команда LOAD DATA , которая загружает данные в таблицу Hive SerDe, не поддерживается. Использование команды приведет к исключению.
Поддержка источников данных ограничена AVRO, BINARYFILE, CSV, DELTA, JSON, KAFKA, ORC, PARQUET, ORC, TEXT и XML.
Переменные Hive не поддерживаются
Переменные Hive (например${env:var}
, , ${system:var}
${configName}
и ) или spark.sql.variable
ссылки на переменные конфигурации, использующие синтаксис, ${var}
не поддерживаются. Использование переменных Hive приведет к исключению.
Вместо этого используйте параметр DECLARE VARIABLE, SET VARIABLE и переменные сеанса SQL ("?" или ":var") для объявления, изменения и ссылочного состояния сеанса. Предложение IDENTIFIER также можно использовать для параметризации имен объектов во многих случаях.
input_file функции устарели
Функции input_file_name(), input_file_block_length()и input_file_block_start() устарели. Использование этих функций очень не рекомендуется.
Вместо этого используйте столбец метаданных файла для получения сведений о метаданных файла.
Изменение поведения
Бессерверные вычислительные ресурсы версии 2024.15 включают следующие изменения поведения:
- Исправление ошибки unhex(hexStr): при использовании
unhex(hexStr)
функции шестнадцатеричная строка всегда слева на целый байт. Ранее функция unhex проигнорировала первую половину байта. Например:unhex('ABC')
теперь производитсяx'0ABC'
вместоx'BC'
. - Автоматически созданные псевдонимы столбцов теперь стабильны: когда результат выражения ссылается без псевдонима столбца, заданного пользователем, этот автоматически созданный псевдоним теперь будет стабильным. Новый алгоритм может привести к изменению ранее созданных автоматически имен, используемых в таких функциях, как материализованные представления.
- Теперь проверки таблиц с
CHAR
полями типов всегда заполнены: разностные таблицы, некоторые таблицы JDBC и внешние источники данных хранят данные CHAR в незакладной форме. При чтении Databricks теперь будет заполнять данные пробелами в объявленную длину, чтобы обеспечить правильную семантику. - Приведение из BIGINT/DECIMAL в TIMESTAMP создает исключение для переполненных значений: Databricks позволяет приведения из BIGINT и DECIMAL в TIMESTAMP, рассматривая значение как количество секунд от эпохи Unix. Ранее Databricks возвращает переполненные значения, но теперь создает исключение в случаях переполнения. Используется
try_cast
для возврата NULL вместо исключения. - Выполнение UDF PySpark было улучшено, чтобы соответствовать точному поведению выполнения UDF при вычислении с одним пользователем: были внесены следующие изменения:
- Определяемые пользователем функции с типом возвращаемой строки больше неявно преобразовывают нестроковые значения в строки. Ранее определяемые пользователем элементы с возвращаемым типом
str
применяютstr(..)
оболочку к результату независимо от фактического типа данных возвращаемого значения. - Определяемые пользователем функции с
timestamp
возвращаемыми типами больше неявно применяют преобразование часового пояса к меткам времени.
- Определяемые пользователем функции с типом возвращаемой строки больше неявно преобразовывают нестроковые значения в строки. Ранее определяемые пользователем элементы с возвращаемым типом
Системная среда
Бессерверные вычисления включают следующую системную среду:
- Операционная система: Ubuntu 22.04.3 LTS
- Python: 3.10.12
- Delta Lake: 3.1.0
Установленные библиотеки Python
Следующие библиотеки Python устанавливаются на бессерверные вычисления по умолчанию. Дополнительные зависимости можно установить с помощью боковой панели среды . См. статью "Установка зависимостей записной книжки".
Библиотека | Версия | Библиотека | Версия | Библиотека | Версия |
---|---|---|---|---|---|
anyio | 3.5.0 | argon2-cffi | 21.3.0 | argon2-cffi-bindings | 21.2.0 |
asttokens | 2.0.5 | astunparse | 1.6.3 | attrs | 22.1.0 |
backcall | 0.2.0 | beautifulsoup4 | 4.11.1 | black | 22.6.0 |
bleach | 4.1.0 | blinker | 1.4 | boto3 | 1.24.28 |
botocore | 1.27.96 | cachetools | 5.3.2 | certifi | 2022.12.7 |
cffi | 1.15.1 | chardet | 4.0.0 | charset-normalizer | 2.0.4 |
щелчок | 8.0.4 | comm | 0.1.2 | контурная диаграмма | 1.0.5 |
криптография | 39.0.1 | cycler | 0.11.0 | Cython | 0.29.32 |
databricks-connect | 14.3.1 | databricks-sdk | 0.20.0 | dbus-python | 1.2.18 |
debugpy | 1.6.7 | decorator | 5.1.1 | defusedxml | 0.7.1 |
distlib | 0.3.8 | docstring-to-markdown | 0,11 | entrypoints | 0,4 |
executing | 0.8.3 | facets-overview | 1.1.1 | fastjsonschema | 2.19.1 |
filelock | 3.13.1 | шрифтовые инструменты | 4.25.0 | google-auth | 2.28.1 |
googleapis-common-protos | 1.62.0 | grpcio | 1.62.0 | grpcio-status | 1.62.0 |
httplib2 | 0.20.2 | idna | 3,4 | importlib-metadata | 4.6.4 |
ipyflow-core | 0.0.198 | ipykernel | 6.25.0 | ipython | 8.14.0 |
ipython-genutils | 0.2.0 | ipywidgets | 7.7.2 | jedi | 0.18.1 |
jeepney | 0.7.1 | Jinja2 | 3.1.2 | jmespath | 0.10.0 |
joblib | 1.2.0 | jsonschema | 4.17.3 | jupyter-client | 7.3.4 |
jupyter-server | 1.23.4 | jupyter_core | 5.2.0 | jupyterlab-pygments | 0.1.2 |
jupyterlab-widgets | 1.0.0 | нажатие клавиш | 23.5.0 | kiwisolver | 1.4.4 |
launchpadlib | 1.10.16 | lazr.restfulclient | 0.14.4 | lazr.uri | 1.0.6 |
lxml | 4.9.1 | MarkupSafe | 2.1.1 | matplotlib | 3.7.0 |
matplotlib-inline | 0.1.6 | Маккейб | 0.7.0 | mistune | 0.8.4 |
more-itertools | 8.10.0 | mypy-extensions | 0.4.3 | nbclassic | 0.5.2 |
nbclient | 0.5.13 | nbconvert | 6.5.4 | nbformat | 5.7.0 |
nest-asyncio | 1.5.6 | nodeenv | 1.8.0 | записная книжка | 6.5.2 |
notebook_shim | 0.2.2 | numpy | 1.23.5 | oauthlib | 3.2.0 |
во внешнем виде | 23,2 | pandas | 1.5.3 | pandocfilters | 1.5.0 |
parso | 0.8.3 | pathspec | 0.10.3 | patsy | 0.5.3 |
pexpect | 4.8.0 | pickleshare | 0.7.5 | Pillow | 9.4.0 |
pip | 22.3.1 | platformdirs | 2.5.2 | график | 5.9.0 |
pluggy | 1.0.0 | prometheus-client | 0.14.1 | prompt-toolkit | 3.0.36 |
protobuf | 4.25.3 | psutil | 5.9.0 | psycopg2 | 2.9.3 |
ptyprocess | 0.7.0 | pure-eval | 0.2.2 | py4j | 0.10.9.7 |
pyarrow | 8.0.0 | pyarrow-hotfix | 0,5 | pyasn1 | 0.5.1 |
pyasn1-modules | 0.3.0 | pyccolo | 0.0.52 | pycparser | 2.21 |
pydantic | 1.10.6 | pyflakes | 3.1.0 | Pygments | 2.11.2 |
PyGObject | 3.42.1 | PyJWT | 2.3.0 | pyodbc | 4.0.32 |
pyparsing | 3.0.9 | pyright | 1.1.294 | pyrsistent | 0.18.0 |
python-dateutil | 2.8.2 | python-lsp-jsonrpc | 1.1.1 | python-lsp-server | 1.8.0 |
pytoolconfig | 1.2.5 | pytz | 2022.7 | pyzmq | 23.2.0 |
requests | 2.28.1 | верёвка | 1.7.0 | rsa | 4,9 |
s3transfer | 0.6.2 | scikit-learn | 1.1.1 | scipy | 1.10.0 |
мореборн | 0.12.2 | SecretStorage | 3.3.1 | Send2Trash | 1.8.0 |
setuptools | 65.6.3 | six | 1.16.0 | sniffio | 1.2.0 |
soupsieve | 2.3.2.post1 | ssh-import-id | 5,11 | stack-data | 0.2.0 |
statsmodels | 0.13.5 | tenacity | 8.1.0 | terminado | 0.17.1 |
threadpoolctl | 2.2.0 | tinycss2 | 1.2.1 | tokenize-rt | 4.2.1 |
tomli | 2.0.1 | tornado | 6.1 | traitlets | 5.7.1 |
typing_extensions | 4.4.0 | ujson | 5.4.0 | unattended-upgrades | 0,1 |
urllib3 | 1.26.14 | virtualenv | 20.16.7 | wadllib | 1.3.6 |
wcwidth | 0.2.5 | webencodings | 0.5.1 | websocket-client | 0.58.0 |
whatthepatch | 1.0.2 | wheel | 0.38.4 | widgetsnbextension | 3.6.1 |
yapf | 0.33.0 | Zipp | 1.0.0 |