Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Fabric Runtime 2.0 — это последняя общедоступная (GA) и стандартная среда выполнения для рабочих нагрузок Apache Spark в Microsoft Fabric. Он обновляет операционную систему, Java, Scala, Python, R, Apache Spark и Delta Lake. Поскольку многие из этих обновлений затрагивают переходы между основными версиями, проверьте свои блокноты, определения заданий Spark, библиотеки и конвейеры данных перед тем, как переводить производственные нагрузки с Runtime 1.3.
В этом руководстве описываются изменения, которые могут повлиять на миграцию, и представлен поэтапный процесс переноса ваших рабочих нагрузок в Runtime 2.0.
Что изменилось в Runtime 2.0
В следующей таблице сравниваются основные компоненты в Runtime 1.3 и Runtime 2.0.
| Component | Среда выполнения 1.3 | Среда выполнения 2.0 | Рассмотрение миграции |
|---|---|---|---|
| Этап выпуска | Объявлено о завершении поддержки (EOSA) | GA | Перенесите рабочие нагрузки в промышленной среде в поддерживаемую среду выполнения GA. |
| Apache Spark | 3.5.5 | 4.1.1 | Пересмотрите изменения в поведении Spark 4.1 и удалённые API. |
| Озеро Дельта | 3.2 | 4.2 | Проверяйте функции таблиц и совместимость протоколов для всех рабочих нагрузок Fabric, использующих ваши таблицы. |
| Java | 11 | двадцать один | Пересоберите и протестируйте Java-библиотеки и зависимости Java Native Interface (JNI). |
| Scala | 2.12.17 | 2.13.16 | Перекомпилируйте JAR-файлы Scala для Scala 2.13. Артефакты Scala 2.12 и 2.13 не являются двоично совместимыми. |
| Python | 3.11 | 3.13 | Убедитесь, что каждый пакет Python предоставляет релиз, совместимый с Python 3.13, и wheel-пакет для Linux. |
| R | 4.4.1 | 4.5.2 | Переустановите и протестируйте кастомные пакеты R. SparkR устарел в Spark 4.1. |
| Операционная система | Azure Linux 2.0 (Mariner 2.0) | Azure Linux 3.0 (Mariner 3.0) | Перестраивать нативные библиотеки и пользовательские бинарные файлы для Azure Linux 3.0. |
Runtime 2.0 также предоставляет новые возможности Apache Spark 4.1, включая тип данных VARIANT, пользовательские функции SQL, переменные сессий, синтаксис труб, сортировку строк, API источника данных Python, пользовательские функции таблицы Python, унифицированное профилирование PySpark и новые API управления состоянием и отладки Structured Streaming. Для обзора см. Runtime 2.0 в Fabric.
Просмотреть изменения совместимости
Ознакомьтесь со следующими разделами перед переводом рабочего пространства или среды на Runtime 2.0.
Встроенные и пользовательские библиотеки
Runtime 2.0 удаляет несколько предустановленных пакетов Python и R, доступных в Runtime 1.3. Сокращение стандартного набора пакетов делает среду выполнения более легковесной и уменьшает поверхность атаки для потенциальных инцидентов безопасности. Пакет, доступный без настройки в Runtime 1.3, может потребоваться явно добавить в вашу среду Runtime 2.0.
Используйте Library Manager, чтобы добавить только те пакеты, которые требуются для вашей рабочей нагрузки, а затем сохраняйте и публикуйте окружение. Менеджер библиотеки обрабатывает зависимости, необходимые пакету, поэтому не добавляйте каждую зависимость в следующие списки по отдельности. Не предполагайте, что библиотека доступна или что её версия осталась без изменений:
- Сравните инвентари пакетов Runtime 1.3 и Runtime 2.0 в репозитории релизов Fabric.
- Добавьте отсутствующие библиотеки PyPI, Conda, Maven, R или пользовательские библиотеки в окружение и опубликуйте его.
- Закрепите версии для производственных нагрузок, чтобы сделать разрешение зависимостей повторяемым.
- Подтвердите, что пакеты Python поддерживают Python 3.13. Пакеты с нативными расширениями должны предоставлять совместимый wheel-пакет для Linux или успешно собираться на Azure Linux 3.0.
- Замените зависимости Scala 2.12 артефактами Scala 2.13. Названия артефактов обычно включают бинарную версию Scala, например
_2.12или_2.13. - Перекомпилируйте пользовательские JAR-файлы под Java 21, Scala 2.13 и Spark 4.1. Проверьте транзитивные зависимости на наличие конфликтов с библиотеками, предоставленными во время выполнения.
- Пересоздавать собственные нативные библиотеки для Azure Linux 3.0.
Fabric переносит спецификации библиотеки при изменении среды выполнения существующего окружения, но не может гарантировать, что эти библиотеки останутся совместимыми. Публикация завершается с ошибкой, когда разрешение зависимостей обнаруживает конфликт. Для опций установки пакетов и режимов публикации см. раздел «Управление библиотеками в средах Fabric».
Пакеты, удалённые из стандартной среды
Следующие списки включают пользовательские пакеты и их низкоуровневые или транзитивные зависимости. Ищите в этих списках пакеты, которые использует ваша рабочая нагрузка Runtime 1.3. Если пакет указан в списке, добавьте версию, совместимую с Python 3.13 или R 4.5, через Library Manager в вашей среде Runtime 2.0.
Python-среда: 348 пакетов Conda
| Package | Package | Package | Package |
|---|---|---|---|
_libgcc_mutex |
_sysroot_linux-64_curr_repodata_hack |
abseil-cpp |
alabaster |
aom |
appdirs |
archspec |
argon2-cffi |
argon2-cffi-bindings |
arrow |
arrow-cpp |
asgiref |
asn1crypto |
astropy |
async_generator |
async-lru |
async-timeout |
autopep8 |
aws-c-auth |
aws-c-cal |
aws-c-common |
aws-c-compression |
aws-c-event-stream |
aws-c-http |
aws-c-io |
aws-c-mqtt |
aws-c-s3 |
aws-c-sdkutils |
aws-checksums |
aws-crt-cpp |
aws-sdk-cpp |
azure-keyvault |
azure-storage |
babel |
backports |
backports.shutil_get_terminal_size |
bcrypt |
beautifulsoup4 |
binaryornot |
binutils_impl_linux-64 |
binutils_linux-64 |
bitarray |
bkcharts |
black |
blas |
bleach |
blinker |
blosc |
bokeh |
boltons |
boost-cpp |
boto |
bottleneck |
brunsli |
c-ares |
c-blosc2 |
cached-property |
cfitsio |
chardet |
charls |
cmake |
cmdstan |
conda-package-handling |
conda-package-streaming |
configparser |
contextlib2 |
cookiecutter |
curl |
cython |
cytoolz |
daal4py |
dal |
dask |
dask-core |
dataclasses |
datasets |
dav1d |
dill |
distributed |
distro |
django |
docutils |
entrypoints |
expat |
fastcache |
flake8 |
flit |
flit-core |
fmt |
fonts-anaconda |
future |
gcc_impl_linux-64 |
gcc_linux-64 |
geographiclib |
geopy |
get_terminal_size |
gevent |
gflags |
giflib |
glib |
glob2 |
glog |
gmp |
gmpy2 |
gobject-introspection |
grpc-cpp |
gst-plugins-base |
gstreamer |
gtk2 |
gxx_impl_linux-64 |
gxx_linux-64 |
hdf5 |
heapdict |
html5lib |
huggingface_hub |
imagecodecs |
imageio |
imagesize |
inflection |
iniconfig |
intel-openmp |
intervaltree |
ipython_genutils |
jaraco.classes |
jeepney |
jpeg |
json5 |
jsonpatch |
jsonpointer |
jupyter_console |
jupyter_events |
jupyter-lsp |
jupyter_server |
jupyter_server_terminals |
jupyterlab |
jupyterlab_pygments |
jupyterlab_server |
jxrlib |
kernel-headers_linux-64 |
keyring |
lazy_loader |
lazy-object-proxy |
liac-arff |
libaec |
libarchive |
libavif |
libclang |
libcurl |
libev |
libevent |
libgcc-devel_linux-64 |
libgfortran-ng |
liblief |
libllvm14 |
libmamba |
libmambapy |
libnghttp2 |
libprotobuf |
libsolv |
libspatialindex |
libssh2 |
libstdcxx-devel_linux-64 |
libthrift |
libtool |
libwebp |
libzopfli |
lightning-utilities |
llvm-openmp |
llvmlite |
locket |
lxml |
lz4 |
lz4-c |
lzo |
make |
markdown |
mccabe |
menuinst |
minio |
mistune |
mkl |
mkl_fft |
mkl_random |
mkl-service |
mock |
more-itertools |
mpc |
mpfr |
mpi |
mpich |
mpmath |
msgpack-python |
msrest |
multipledispatch |
multiprocess |
mysql |
nbclassic |
nbclient |
nbconvert |
nest-asyncio |
networkx |
ninja |
ninja-base |
nose |
notebook |
notebook-shim |
nspr |
nss |
numba |
numexpr |
numpy-base |
numpydoc |
oauthlib |
olefile |
openml |
orc |
overrides |
pandocfilters |
paramiko |
partd |
patch |
patchelf |
path |
path.py |
pathlib2 |
pep8 |
pickleshare |
pkginfo |
pluggy |
ply |
poppler |
poppler-data |
prettytable |
prometheus_client |
py-cpuinfo |
py-lief |
pybind11-abi |
pycodestyle |
pycosat |
pycurl |
pydocstyle |
pyerfa |
pyflakes |
pynacl |
pyopenssl |
pyqt |
pyqt5-sip |
pyrsistent |
pytables |
pytest |
python-fastjsonschema |
python-json-logger |
python-libarchive-c |
python-lmdb |
python-slugify |
python-xxhash |
pytorch |
pytorch-lightning |
pytorch-mutex |
pywavelets |
qdarkstyle |
qstylizer |
qt |
qt-main |
qt-webengine |
qtawesome |
qtconsole |
qtpy |
re2 |
reproc |
reproc-cpp |
requests-oauthlib |
rfc3339-validator |
rfc3986-validator |
rhash |
ripgrep |
rtree |
s2n |
safetensors |
scikit-build |
scikit-image |
scikit-learn-intelex |
secretstorage |
send2trash |
shap |
simplegeneric |
singledispatch |
sip |
slicer |
snappy |
snowballstemmer |
sortedcollections |
sortedcontainers |
soupsieve |
sphinx |
sphinxcontrib |
sphinxcontrib-applehelp |
sphinxcontrib-devhelp |
sphinxcontrib-htmlhelp |
sphinxcontrib-jsmath |
sphinxcontrib-qthelp |
sphinxcontrib-serializinghtml |
sphinxcontrib-websupport |
sqlite |
sympy |
sysroot_linux-64 |
tbb |
tbb-devel |
tbb4py |
tblib |
terminado |
testpath |
text-unidecode |
textdistance |
tifffile |
tinycss2 |
tokenizers |
toml |
tomli-w |
toolz |
torchdata |
torchmetrics |
transformers |
truststore |
typed-ast |
ujson |
unicodecsv |
unidecode |
utf8proc |
webencodings |
websocket-client |
wheel |
whichcraft |
xlsxwriter |
xlwt |
xmltodict |
xxhash |
xyzservices |
xz |
yaml-cpp |
yapf |
zfp |
zict |
zlib |
zope |
zope.event |
zope.interface |
zstandard |
Среда Python: 24 pip-пакета
| Package | Package | Package | Package |
|---|---|---|---|
accelerate |
astor |
dash |
dash-core-components |
dash-cytoscape |
dash-html-components |
dash-table |
docker |
interpret |
interpret-core |
json-tricks |
nni |
nvidia-ml-py |
pyperclip |
pythonwebhdfs |
responses |
retrying |
salib |
schema |
seqeval |
simplejson |
tensorboardx |
thop |
typeguard |
Среда R: 67 пакетов Conda
| Package | Package | Package | Package |
|---|---|---|---|
_libgcc_mutex |
_sysroot_linux-64_curr_repodata_hack |
blosc |
cfitsio |
expat |
fmt |
freetype |
freexl |
geos |
geotiff |
giflib |
hdf4 |
hdf5 |
json-c |
kealib |
lcms2 |
libaec |
libarchive |
libgdal |
libgdal-core |
libgdal-fits |
libgdal-grib |
libgdal-hdf4 |
libgdal-hdf5 |
libgdal-jp2openjpeg |
libgdal-kea |
libgdal-netcdf |
libgdal-pdf |
libgdal-pg |
libgdal-postgisraster |
libgdal-tiledb |
libgdal-xls |
libkml |
libnetcdf |
libnsl |
librttopo |
libspatialite |
libsqlite |
libudunits2 |
libv8 |
libzip |
lzo |
minizip |
nspr |
nss |
openjpeg |
poppler |
poppler-data |
proj |
r-classint |
r-gsl |
r-jose |
r-mgcv |
r-s2 |
r-sf |
r-units |
r-wk |
spdlog |
sqlite |
tiledb |
uriparser |
xerces-c |
xorg-kbproto |
xorg-renderproto |
xorg-xextproto |
xorg-xproto |
xz |
Note
Если защита исходящего доступа или управляемая виртуальная сеть не позволяет получить доступ к публичным репозиториям, скачайте совместимые файлы wheel или разместите зеркало пакетов. Для инструкций см. раздел «Управление библиотеками с ограниченным доступом к сети» в Fabric.
Изменения конфигурации Spark
Runtime 2.0 добавляет и удаляет настройки Spark, а также меняет некоторые значения по умолчанию. Fabric также использует другие настройки по умолчанию, чем Apache Spark, для некоторых настроек.
Перед миграцией ознакомьтесь с настройками Spark, которые вы настроили для рабочих пространств, окружений, блокнотов и определений заданий Spark. Удалите настройки, которые больше не поддерживаются, и протестируйте рабочие нагрузки, зависящие от изменившихся значений по умолчанию. Используйте настройки времени выполнения по умолчанию, если только документация не указывает изменить какую-либо настройку.
Заметные изменения значений по умолчанию
В следующей таблице перечислены выбранные базовые изменения. Not set означает, что базовая линия явно не устанавливает значение; это не означает, что функция отключена.
| Configuration | значение Runtime 1.3 | Значение времени выполнения 2.0 | Рассмотрение миграции |
|---|---|---|---|
spark.checkpoint.compress |
false |
true |
Файлы контрольных точек по умолчанию сжаты. Проверьте совместимость чекпоинтов и поведение при хранении данных. |
spark.databricks.delta.optimizeWrite.enabled |
true |
Не установлено | Свойство не удаляется. Проверьте фактическое поведение оптимизированной записи с помощью настроек таблицы, сессии и профиля ресурсов. |
spark.databricks.delta.optimizeWrite.partitioned.enabled |
false |
true |
Проверьте пропускную способность записи и размеры выходных файлов для разделённых таблиц Delta. |
spark.hadoop.parquet.block.size |
1073741824 (1 ГиБ) |
134217728 (128 MiB) |
Модули записи Parquet используют меньшие блоки. Проверяйте размеры файлов и производительность чтения в последующих процессах. |
spark.microsoft.delta.optimize.fast.enabled |
false |
true |
OPTIMIZE Может пропустить работу, если не выполнены критерии по количеству файлов или оценочному размеру уплотнения. Подтвердите результаты обслуживания. |
spark.microsoft.delta.optimize.fileLevelTarget.enabled |
false |
true |
Файлы, которые ранее достигали как минимум половины целевого размера после компактизации, не сжимаются снова. Проверьте верстку файла после OPTIMIZE. |
spark.microsoft.delta.targetFileSize.adaptive.enabled |
false |
true |
Delta рассчитывает размер целевого файла на основе размера таблицы. Проверьте размеры полученных файлов и производительность чтения. |
spark.speculation.multiplier |
1.5 |
3 |
Задание должно идти в три раза медленнее медианы, прежде чем Спарк рассмотрит его для спекулятивного выполнения. |
spark.speculation.quantile |
0.75 |
0.9 |
Spark ждёт завершения 90% задач, прежде чем приступить к спекулятивному выполнению. |
spark.sql.files.maxPartitionBytes |
134217728 (128 MiB) |
536870912 (512 MiB) |
Сканированные файлы могут вместить больше данных в каждый раздел. Проверьте параллелизм и использование памяти исполнителя. |
spark.sql.maxSinglePartitionBytes |
Long.MaxValue |
128m |
Один раздел по умолчанию ограничен до 128 МиБ. Проверяйте запросы, которые создают большие отдельные партиции. |
spark.sql.orc.compression.codec |
snappy |
zstd |
Новые записи в ORC по умолчанию используют сжатие Zstandard. Проверьте совместимость и производительность с последующими считывателями. |
spark.sql.sources.v2.bucketing.enabled |
false |
true |
Spark по умолчанию поддерживает соединения с секционированием по хранилищу и другое поведение бакетирования Data Source V2. Проверяйте планы и результаты запросов. |
spark.sql.sources.v2.bucketing.pushPartValues.enabled |
false |
true |
Spark может отправлять совместимые значения разделов для бакетизации источника данных V2. Проверяйте планы запросов для бакетированных таблиц. |
Runtime 2.0 также использует ROCKSDB вместо LEVELDB для spark.shuffle.service.db.backend и устанавливает spark.shuffle.service.removeShuffle на true. Spark использует внешний shuffle-сервис для удаления ненужных shuffle-блоков для освобождённых исполнителей.
Дельта-параллельная загрузка снимков, параллельный пропуск данных и загрузка снимков на стороне драйвера также меняются с false на true. Тестируйте задержку запросов и использование ресурсов драйверов, особенно для запросов, которые обращаются к нескольким таблицам Delta.
Переопределения запуска сеанса и нативное выполнение
Внедрение функций Fabric может переопределять базовые значения при начале сессии.
| Configuration | Базовое значение Runtime 2.0 | Значение старта сессии в общедоступных производственных регионах в Runtime 2.0 | Рассмотрение миграции |
|---|---|---|---|
spark.gluten.sql.columnar.costBasedFallback.enabled |
false |
true |
Запуск в производственную среду, зафиксированный 16 октября 2026 года, обеспечивает резервное переключение на Spark на основе стоимости. Перепроверьте планы запросов и производительность, включая рабочие нагрузки, протестированные до того развертывания. |
spark.sql.parquet.native.writer.complexTypes.enabled |
false |
true |
Тестируйте нативные операции записи в Parquet и последующие чтения массивов, ассоциативных массивов и структур. |
При использовании нативного движка исполнения включайте следующие проверки в регрессионные тесты:
- Подтвердите использование памяти с увеличением столбцового пакетного размера по умолчанию с 4 096 до 10 240.
- Сравните планы перемешивания и производительность с порогом перемешивания на основе сортировки, который снизился с 100 000 до 4 000 партиций.
- Сравните результаты регулярного выражения и производительность. Поддержка regex на нативном движке Java меняется с отключённой на включённую, а настройка, переводящая обработку всех regex-выражений на Spark, меняется с
trueнаfalse.
Значения по умолчанию Apache Spark 4.1 обрабатываются иначе в Fabric
Fabric Runtime 2.0 намеренно переопределяет следующие параметры по умолчанию Apache Spark 4.1. Не думайте, что стандартная настройка Spark 4.1 из upstream в Fabric остаётся без изменений.
| Configuration | Apache Spark 4.1 по умолчанию | Значение Fabric Runtime 2.0 |
|---|---|---|
spark.eventLog.compress |
true |
false |
spark.eventLog.rolling.enabled |
true |
false |
spark.sql.ansi.enabled |
true |
false |
spark.sql.catalog.spark_catalog |
builtin |
org.apache.spark.sql.delta.catalog.DeltaCatalog |
spark.sql.hive.metastore.version |
2.3.10 |
2.3.2 |
Поведение Spark SQL и DataFrame
Spark 4.1 вводит изменения поведения, которые могут изменить результаты запросов или привести к сбою запросов, которые ранее принимались. Обратите особое внимание на поведение ANSI SQL, касты, операции с датами и временными метками, типы данных, отображения JDBC и устаревшие конфигурации SQL.
Проведите регрессионные тесты и сравните:
- Выходные схемы, включая тип, точность, разрядность и допустимость NULL.
- Количество строк и совокупные результаты.
- Ноль, переполнение, деление на ноль и поведение при недопустимом приведении типов.
- Дата, метка времени, часовой пояс и результаты интервалов.
- Отображения типа источника и приемника JDBC.
- Планы запросов и производительность для критически важных нагрузок.
Не используйте устаревшие настройки совместимости как постоянную стратегию миграции. Если вы временно используете его для выявления сбоя, обновите затронутый код и удалите эту настройку перед завершением миграции. Полный набор изменений в поведении см. в руководстве по миграции Spark SQL.
API Python и pandas на Spark
Runtime 2.0 переходит с Python 3.11 на Python 3.13 и включает изменения PySpark, введённые в Spark 4.1. Spark 4.1 также повышает минимально поддерживаемые версии pandas, NumPy и PyArrow и удаляет API, которые были устаревшими в предыдущих версиях.
Обновления общего API pandas в Spark включают:
- Заменить
DataFrame.iteritemsиSeries.iteritemsнаitems. - Заменить
DataFrame.appendиSeries.appendнаps.concat. - Заменить удалённые
inplaceпараметры в категорияльных операциях на присваивания. - Проверьте изменённые имена параметров и значения по умолчанию, такие как
inclusiveиSeries.str.replace(regex=...). - Проверьте имена столбцов результатов, имена индексов, dtypes и порядок.
Полный список см. руководство по миграции PySpark.
Приложения Java и Scala
Scala 2.13 не является бинарно совместимой с Scala 2.12. Повторное использование JAR Runtime 1.3 в Runtime 2.0 может вызывать ошибки при загрузке классов даже без изменений исходного кода. Создайте отдельный артефакт Runtime 2.0 и обновите все кросс-билдированные зависимости Scala.
Spark 4.1 также меняет внутренние ссылки на API сервлетов с javax на jakarta. Проверьте пользовательские слушатели, расширения Spark и библиотеки, взаимодействующие с внутренними механизмами Spark. Для других изменений на уровне движка смотрите руководство по миграции Spark Core.
Потоковые нагрузки и коннекторы
Устаревший EventHubConnector, включённый в Runtime 1.3, недоступен в Runtime 2.0. Используйте коннектор Apache Spark Kafka с совместимой с Kafka конечной точкой для Центры событий Azure. Инструкции по настройке см. в статье Use Apache Spark with Центры событий Azure for Apache Kafka.
Для соответствующих сценариев вы также можете использовать Fabric Eventstream для загрузки потоковых данных и обработки их в блокноте с Spark Structured Streaming. Для получения дополнительной информации смотрите Запрос к eventstream в Microsoft Fabric из записной книжки с Spark Structured Streaming.
Для каждой рабочей нагрузки Structured Streaming:
- Проверьте, может ли запрос Runtime 2.0 перезапуститься с копии существующей контрольной точки.
- Проверяйте операции с сохранением состояния, водяные знаки времени события, триггеры, опции источника и поглотителя, а также схемы вывода.
- Сохраняйте исходные данные и исходную контрольную точку сохранения доступными до завершения валидации.
- Если контрольная точка несовместима, планируйте контролируемый перезапуск с новой контрольной точкой. Учтите повторный или пропущенный ввод и сделайте приемник идемпотентным перед перезапуском.
Ознакомьтесь с руководством по миграции Structured Streaming на предмет изменений совместимости в вышестоящих компонентах.
Таблицы Delta Lake
Delta Lake поддерживает обратную совместимость с существующими таблицами, поэтому Runtime 2.0 может работать с таблицами, созданными Runtime 1.3. Однако включение новой функции таблицы может повысить протокол чтения или записи таблицы и предотвратить использование таблицы старыми движками или другими средствами Fabric.
Во время начальной миграции среды выполнения:
- Не обновляйте протоколы таблиц и не включайте функции Delta Lake 4.2.
- Проверьте характеристики и версии протоколов как новосозданных таблиц, так и существующих. Runtime 2.0 устанавливает
spark.databricks.delta.properties.defaults.enableDeletionVectorsнаtrue; проверьте полученные метаданные таблицы, вместо того чтобы предполагать, что отказ от ручного включения функций сохраняет совместимость. - Тестовое чтение, запись, слияние, эволюция схемы, операции обслуживания и одновременный доступ.
- Определите каждый движок, который читает или записывает каждую таблицу, включая конечную точку аналитики SQL, Power BI, конвейеры, потоки данных, потоки событий и внешние движки.
- Включайте новую функцию Delta только после того, как все консьюмеры её поддержат.
Особенности, специфичные для Delta Lake 4.2, экспериментальны в Fabric и доступны только в средах Spark. Для матрицы поддержки и версий протокола по умолчанию см. функциональную совместимость формата таблиц Delta Lake.
Перенесите рабочие нагрузки
Используйте поэтапную миграцию вместо того, чтобы сразу менять среду выполнения для производственного рабочего пространства.
1. Инвентаризируйте свои рабочие нагрузки Runtime 1.3
Запишите следующие сведения:
- Блокноты, определения заданий Spark, конвейеры, расписания и зависимые элементы.
- Назначения сред на уровне рабочего пространства и объекта.
- Настройки Spark, включая любые настройки совместимости с устаревшими версиями.
- Публичные, частные и пользовательские библиотеки с их итоговыми версиями.
- Пользовательские JAR-файлы, wheel-пакеты Python, R-пакеты, нативные библиотеки и логика инициализации.
- Источники данных, назначения, секретные данные, соединения и требования к сети.
- Таблицы Delta и все потребители этих таблиц, не входящие в Spark.
- Контрольные точки потоковой передачи, схемы, офсеты и требования к восстановлению.
- Ожидаемые схемы вывода, количество строк, проверки качества данных и базовые показатели производительности.
Отдавайте приоритет рабочим нагрузкам, использующим пользовательские библиотеки, нативный код, Scala, потоковое состояние или продвинутые функции Delta.
2. Создать тестовую среду Runtime 2.0
Создайте отдельный элемент среды и выберите 2.0 (Spark 4.1, Delta 4.2) в качестве среды выполнения. Добавьте необходимые библиотеки, сохраните окружение и опубликуйте его. Прикрепляйте окружение к копиям представительных записных книжек и определениям заданий Spark в рабочем пространстве для разработки или тестирования.
Если ваше рабочее пространство всё ещё использует Runtime 1.3, не меняйте его Runtime до завершения тестирования. Оставьте существующую конфигурацию доступной для отката во время валидации.
Чтобы проверить предстоящие обновления Runtime 2.0 до того, как они попадут на канал по умолчанию, используйте канал раннего доступа в вашей тестовой среде. Для получения дополнительной информации смотрите каналы выпуска среды выполнения Fabric.
3. Обновите библиотеки и код
Примените изменения, выявленные при проверке совместимости:
- Замените отсутствующие встроенные пакеты на явные зависимости среды.
- Обновляйте или заменяйте пакеты, которые не поддерживают Python 3.13, Java 21, Scala 2.13 или Azure Linux 3.0.
- Перестраивайте пользовательские JAR-файлы и нативные бинарные файлы.
- В обновлении удалены вызовы PySpark и pandas API on Spark.
- Замените
EventHubConnectorна коннектор Kafka. - Удалите настройки Spark для конфигураций, недоступных в Runtime 2.0, и просмотрите явно заданные переопределения конфигураций, чьи значения по умолчанию изменились.
- Разрешите различия в поведении Spark SQL в коде, а не постоянно полагаться на устаревшие настройки.
- Сохраняйте существующие функции и протоколы таблицы Delta без изменений на этом этапе.
4. Запустите тесты совместимости и регрессии
Запустите те же репрезентативные входные данные на Runtime 1.3 и Runtime 2.0. Сравнить:
- Статус завершения, журналы, предупреждения и повторы.
- Схемы и типы данных.
- Результаты на уровне строк и агрегированные результаты.
- История и протокол таблицы Delta.
- Прогресс потоковой передачи, состояние, задержка и обработка дубликатов.
- Время выполнения, использование ресурсов и стоимость.
- Далее результаты поступают в endpoint аналитики SQL, Power BI, конвейеры и другие потребители.
Включайте тесты на отказы и восстановление, а не только успешные прогоны. Перезапуск тестовых сессий, повторные попытки выполнения заданий, восстановление из контрольных точек и параллельный доступ к таблице.
5. Развернуть Runtime 2.0
Перемещайте рабочие нагрузки контролируемыми партиями:
- Опубликуйте проверенную среду Runtime 2.0.
- Прикрепляйте его к небольшому набору производственных блокнотов или определениям заданий Spark.
- Запускайте пакетное задание и отслеживайте выходные данные и последующих потребителей.
- Продолжайте выполнять оставшиеся рабочие нагрузки после периода наблюдения.
- Установите Runtime 2.0 в качестве значения по умолчанию для рабочего пространства только после завершения миграции на уровне элемента.
Изменение среды выполнения рабочего пространства влияет на новые сессии Spark. Существующие сессии продолжают использовать текущую среду выполнения до тех пор, пока не останавливаются.
6. Сохраняйте возможность отката
Сохраняйте среду Runtime 1.3, артефакты, спецификации библиотеки и контрольные точки потоковой обработки до окончания периода наблюдения Runtime 2.0. Чтобы откатить назад, подключите среду Runtime 1.3 или восстановите предыдущую среду выполнения рабочей области и запустите новую сессию Spark.
Important
Обновление протокола Delta, как правило, необратимо. Не включайте функции таблиц, повышающие протокол, пока не завершите валидацию Runtime 2.0 и не подтвердите совместимость с каждым потребителем таблиц.
Контрольный список миграции
Перед завершением миграции убедитесь, что:
- [ ] Все необходимые пакеты Python и R явно доступны и совместимы с Python 3.13 или R 4.5.
- [ ] Пользовательские JAR-файлы нацелены на Java 21, Scala 2.13 и Spark 4.1.
- [ ] Нативные зависимости работают на Azure Linux 3.0.
- [ ] Настройки Workspace, окружения, блокнота и определения задания Spark не используют удаленные конфигурации Spark.
- [ ] Рабочие нагрузки тестируются с учётом изменённых настроек Runtime 2.0 Spark по умолчанию.
- [ ] Тесты регрессии Spark SQL и PySpark проходят.
- [ ] Рабочие нагрузки Event Hubs используют разъём Kafka.
- [ ] Рабочие нагрузки Structured Streaming перезапускаются и восстанавливаются должным образом.
- [ ] Протоколы и функции Delta Table остаются совместимы со всеми потребителями.
- [ ] Качество данных, производительность и стоимость соответствуют вашим критериям приёма.
- [ ] Процедуры развертывания в продуктивной среде, мониторинга и отката документируются и тестируются.