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


Заметки о выпуске бессерверных вычислений

В этой статье описываются функции и поведение, которые в настоящее время доступны и предстоящие на бессерверных вычислительных ресурсах для записных книжек и заданий.

Дополнительные сведения о бессерверных вычислениях см. в разделе "Подключение к бессерверным вычислениям".

Databricks периодически выпускает обновления бессерверных вычислений, автоматически обновляя бессерверную среду выполнения вычислений для поддержки улучшений и обновлений на платформу. Все пользователи получают одинаковые обновления, развертываются в течение короткого периода времени.

Предстоящие изменения поведения

В этом разделе рассматриваются изменения поведения, поступающие в следующую бессерверную версию вычислений. После отправки изменений в рабочую среду они будут добавлены в заметки о выпуске.

Сентябрь 2024 г.

Изменение привязки схемы для представлений

Когда типы данных в базовом запросе представления изменяются с тех, которые используются при первом создании представления, Databricks больше не будет вызывать ошибки для ссылок на представление, когда не может быть выполнено безопасное приведение. Вместо этого представление компенсирует использование правил приведения по возможности.

Это изменение позволяет Databricks более легко терпеть изменения схемы таблицы.

Запретить недокументированную ! синтаксическую терпимость для NOT внешней логическое логики

Databricks больше не допускает использование в качестве синонима ! за NOT пределами логического логики. Например:

CREATE ... IF ! EXISTS, IS ! NULL, ! NULL свойство столбца или поля и ! IN ! Между ними необходимо заменить следующее:

CREATE ... IF NOT EXISTS, IS NOT NULLNOT 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:

Неподдерживаемые команды 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