Fabric 运行时 2.0 是 Microsoft Fabric 中最新的通用版(GA)和默认运行时,适用于 Apache Spark 工作负载。 它更新操作系统、Java、Scala、Python、R、Apache Spark 和 Delta Lake。 由于这些更新中有部分跨越了主要版本的边界,在将生产工作负载从运行时1.3迁移之前,请先验证你的笔记本、Spark作业定义、库和数据管道。
本指南介绍了可能影响迁移的变更,并提供了一个分阶段的流程,帮助将工作负载迁移到运行时2.0。
运行时2.0发生了什么变化
下表比较了运行时1.3和运行时2.0中的主要组件。
| 组分 | 运行时 1.3 | 运行时 2.0 | 迁移考虑 |
|---|---|---|---|
| 发布阶段 | 支持终止公告(EOSA) | GA | 将生产工作负载迁移到受支持的正式发布版运行时。 |
| Apache Spark | 3.5.5 | 4.1.1 | 请审查 Spark 4.1 的行为变更和移除的 API。 |
| Delta Lake | 3.2 | 4.2 | 验证每个使用您的表的 Fabric 工作负载的表功能和协议兼容性。 |
| Java | 11 | 21 | 重建并测试 Java 库及 Java 原生接口(JNI)依赖。 |
| Scala | 2.12.17 | 2.13.16 | 为 Scala 2.13 重新编译 Scala JAR 文件。 Scala 2.12 和 2.13 的构件不具备二进制兼容性。 |
| Python | 3.11 | 3.13 | 确认每个 Python 包是否提供兼容 Python 3.13 的版本和 Linux wheel 包。 |
| 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 的原生库和自定义二进制文件。 |
运行时 2.0 还提供了新的 Apache Spark 4.1 功能,包括VARIANT数据类型、SQL 用户自定义函数、会话变量、管道语法、字符串排序、Python 数据源 API、Python 用户自定义表函数、统一的 PySpark 性能分析,以及新的结构化流状态管理和调试 API。 有关概述,请参见 Fabric 中的运行时 2.0。
审查兼容性更改
在将工作区或环境改为运行时2.0之前,请先审查以下内容。
内置与自定义库
运行时2.0移除了运行时1.3中预装的多个Python和R包。 减少默认包集可以保持运行时精简,并减少潜在安全事件的攻击面。 在运行时 1.3 中无需配置即可获得的包,可能需要明确添加到你的运行时 2.0 环境中。
用库管理器只添加你工作负载需要的包,然后保存并发布环境。 Library Manager 解决了包所需的依赖关系,所以不要单独添加以下清单中的每个依赖。 不要假设某个库可用,或者其版本未变:
- 比较 Fabric 运行时发布仓库中的 Runtime 1.3 和 Runtime 2.0 包库存。
- 将缺失的 PyPI、Conda、Maven、R 或自定义库添加到环境中并发布该环境。
- 为生产工作负载固定版本,使依赖解析可重复。
- 确认 Python 包支持 Python 3.13。 带有原生扩展的包必须提供兼容的 Linux wheel,或在 Azure Linux 3.0 上成功构建。
- 用 Scala 2.13 工件替换 Scala 2.12 依赖。 工件名称通常包括 Scala 的二进制版本,如
_2.12或_2.13。 - 重新编译针对Java 21、Scala 2.13和Spark 4.1的自定义JAR文件。 测试传递依赖是否与运行时提供的库冲突。
- 重建 Azure Linux 3.0 的自定义原生库。
Fabric 在你更改现有环境运行时时会迁移库规范,但它不能保证这些库仍然兼容。 当依赖项解析发现冲突时,发布失败。 有关包安装选项和发布模式,请参见“管理 Fabric 环境中的库”。
从默认环境中移除的包
以下清单包括面向用户的包及其底层或传递依赖。 在这些列表中搜索你的运行时 1.3 工作负荷使用的包。 如果有包被列出,可以通过 Library Manager 在你的运行时 2.0 环境中添加一个兼容 Python 3.13 或 R 4.5 的版本。
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
如果出站访问保护或受管理的虚拟网络阻止访问公共仓库,请下载兼容的 whl 文件或托管包镜像。 有关说明,请参见在 Fabric 中管理具有有限网络访问权限的库。
Spark 配置变更
运行时2.0会添加和移除Spark设置,并更改一些默认值。 Fabric 在某些设置上也使用了与 Apache Spark 不同的默认设置。
迁移前,请检查你为工作区、环境、笔记本和 Spark 作业定义配置的 Spark 设置。 移除不再支持的设置,并测试依赖于已更改的默认值的工作负载。 除非文档指示你更改设置,否则就用运行时默认设置。
显著的默认值变更
下表列出了部分基线变更。 未设置 意味着基线没有明确设置某个值;也不意味着该功能被禁用。
| 配置 | 运行时间值 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 GiB) |
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才会考虑该任务进行推测执行。 |
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 MiB。 验证产生大型单分区的查询。 |
spark.sql.orc.compression.codec |
snappy |
zstd |
新的 ORC 写入默认使用 Zstandard 压缩。 验证与下游读卡器的兼容性和性能。 |
spark.sql.sources.v2.bucketing.enabled |
false |
true |
Spark 默认启用存储分区连接和其他数据源 V2 桶处理行为。 验证查询计划和结果。 |
spark.sql.sources.v2.bucketing.pushPartValues.enabled |
false |
true |
Spark 可以为 Data Source V2 分桶推送兼容的分区值。 验证桶表的查询计划。 |
运行时 2.0 还针对LEVELDB使用true来代替spark.shuffle.service.removeShuffle,并将spark.shuffle.service.db.backend设置为ROCKSDB。 Spark 使用外部洗牌服务删除已释放执行器的不需要洗牌块。
Delta 并行快照加载、并行数据跳过和驱动端快照加载也从 false 变为 true。 测试查询延迟和驱动资源使用情况,尤其是访问多个Delta表的查询。
会话启动覆盖与本地执行
Fabric 功能分阶段发布可能会在会话开始时覆盖基准值。
| 配置 | 运行时2.0基线值 | 公共生产区域中的 Runtime 2.0 会话启动值 | 迁移考虑 |
|---|---|---|---|
spark.gluten.sql.columnar.costBasedFallback.enabled |
false |
true |
2026年10月16日记录的生产发布支持基于成本回退到 Spark。 重新检查查询计划和性能,包括在那次发布之前测试过的工作负载。 |
spark.sql.parquet.native.writer.complexTypes.enabled |
false |
true |
测试 Parquet 原生的数组、映射和结构的写入和下游读取。 |
使用原生执行引擎时,在回归测试中包含以下检查:
- 验证内存使用情况,列式批处理大小默认值从4,096增加到10,240。
- 比较基于排序的列式洗牌阈值从 100,000 个分区降至 4,000 个分区时的洗牌计划和性能。
- 比较正则表达式的结果与表现。 原生引擎 Java 正则表达式支持从禁用变为启用,且将所有正则表达式回退到 Spark 的设置也从
true变为false。
Fabric 中保留的 Apache Spark 4.1 默认设置有所不同
Fabric 运行时 2.0 有意覆盖以下 Apache Spark 4.1 默认设置。 不要假设上游的 Spark 4.1 默认设置在 Fabric 中会原封不动地适用。
| 配置 | 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行为、cast、日期和时间戳操作、数据类型、JDBC映射以及已废弃的SQL配置。
运行回归测试,比较以下内容:
- 输出架构,包括类型、精度、小数位数和可为空。
- 行数和结果汇总。
- 空、溢出、除以零和无效类型转换行为。
- 日期、时间戳、时区和间隔结果。
- JDBC 源和汇类型映射。
- 关键工作负载的查询计划和性能。
不要把遗留兼容性设置作为永久迁移策略。 如果你临时用它来隔离故障,请在完成迁移前更新受影响的代码并移除该设置。 有关完整的行为变更,请参见 Spark SQL 迁移指南。
Spark 上的 Python 和 pandas API
运行时 2.0 从 Python 3.11 迁移到 Python 3.13,并包含了 Spark 4.1 引入的 PySpark 变更。 Spark 4.1 还提高了 pandas、NumPy 和 PyArrow 的最低支持版本,并移除了早期版本中被弃用的 API。
Spark 上常见的 pandas API 更新包括:
- 将
DataFrame.iteritems和Series.iteritems替换为items。 - 将
DataFrame.append和Series.append替换为ps.concat。 - 用赋值替换分类操作中被移除的参数。
- 复查更改后的参数名称和默认值,如
inclusive和Series.str.replace(regex=...)。 - 验证结果列名、索引名、数据类型和排序。
完整列表请参见 PySpark 迁移指南。
Java 和 Scala 应用
Scala 2.13 与 Scala 2.12 不兼容二进制。 在运行时 2.0 中重复使用运行时 1.3 JAR 即使源代码未更改,也可能引发类加载错误。 构建一个独立的运行时 2.0 构件,并更新所有 Scala 跨构建的依赖。
Spark 4.1 还将其内部 servlet API 引用从 javax 更改为 jakarta。 审查自定义监听器、Spark 扩展以及与 Spark 内部交互的库。 有关其他引擎层面的变更,请参见 Spark Core 迁移指南。
流式工作负载与连接器
运行时1.3中包含的已弃用 EventHubConnector 版本在运行时2.0中不可用。 使用 Apache Spark Kafka connector 配合用于 Azure 事件中心 的 Kafka 兼容端点。 设置指导请参见 Use Apache Spark with Azure 事件中心 for Apache Kafka。
在适用场景下,你还可以评估 Fabric 事件流,以引入流式数据,并通过 Spark 结构化流在笔记本中对其进行处理。 欲了解更多信息,请参见“从带有 Spark 结构化流的笔记本查询 Microsoft Fabric 中的事件流”。
对于每个结构化流工作负载:
- 测试运行时2.0查询是否可以从现有检查点的副本重新开始。
- 验证有状态操作、事件时水印、触发器、源和汇选项以及输出架构。
- 在验证完成前,保持源数据和原始检查点可用。
- 如果检查点不兼容,请计划使用新检查点进行一次受控重启。 考虑重放或跳过的输入,并在重启前确保接收端是幂等的。
请查看 结构化流迁移指南 ,了解上游兼容性的变更。
Delta Lake 表
Delta Lake 保持了对现有表的向后兼容,因此 Runtime 2.0 可以兼容由 Runtime 1.3 创建的表。 然而,启用新的表功能可能会提升表的读取器协议或写入器协议,防止旧引擎或其他 Fabric 体验使用该表。
在初始运行迁移期间:
- 不要升级表协议或启用 Delta Lake 4.2 功能。
- 检查新创建的表以及现有表的功能和协议版本。 运行时 2.0 将
spark.databricks.delta.properties.defaults.enableDeletionVectors设置为true;验证生成的表元数据,而不要假设避免手动启用功能就能保持兼容性。 - 读取、写入、合并、模式演进、维护操作和并发访问测试。
- 识别每个读取或写入每个表的引擎,包括SQL分析端点、Power BI、管道、数据流、事件流和外部引擎。
- 只有在所有消费者都支持后,才能启用新的 Delta 功能。
Delta Lake 4.2 专属功能在 Fabric 中是实验性的,仅限于 Spark 体验。 关于支持矩阵和默认协议版本,请参见 Delta Lake 表格格式互操作性。
迁移工作负载
使用分级迁移,而不是立即更改生产工作区的运行时。
1. 对运行时1.3工作负载进行盘点
记录以下信息:
- 笔记本、Spark作业定义、流水线、计划和依赖项。
- 工作区级和项目级环境分配。
- Spark配置,包括任何遗留兼容性设置。
- 公共、私有和自定义库及其解析版本。
- 自定义JAR文件、Python wheel 包、R软件包、本地库和初始化逻辑。
- 数据源、目标位置、机密、连接和网络要求。
- Delta 表以及所有这些表的非 Spark 使用者。
- 流检查点、架构、偏移量和恢复要求。
- 预期输出模式、行计数、数据质量检查和性能基线。
优先考虑使用自定义库、原生代码、Scala、流式状态或高级Delta功能的工作负载。
2. 创建一个运行时2.0测试环境
创建一个独立的环境项,并选择 2.0(Spark 4.1,Delta 4.2) 作为运行时。 添加所需的库,保存环境,然后将其发布。 将环境附加到开发或测试工作区中代表性的笔记本和Spark作业定义的副本上。
如果你的生产工作区仍然使用运行时1.3,测试完成前不要更改运行时。 在验证时保留现有配置,以便回滚。
为了在即将发布的运行时2.0更新到达默认通道前对其进行验证,请在测试环境中使用抢先体验发布通道。 更多信息请参见 Fabric 运行时发布通道。
3. 更新库和代码
应用兼容性审查中发现的变更:
- 用显式环境依赖替换缺失的内置包。
- 升级或替换不支持 Python 3.13、Java 21、Scala 2.13 或 Azure Linux 3.0 的软件包。
- 重建自定义JAR文件和本地二进制文件。
- 更新移除了 Spark 调用中的 PySpark 和 pandas API。
- 换
EventHubConnector成Kafka连接器。 - 移除运行时2.0中不可用的配置的Spark设置,并审查默认值变更的配置的具体覆盖。
- 解决代码中 Spark SQL 行为的差异,而不是永久依赖遗留设置。
- 在此阶段保持现有的Delta表功能和协议不变。
4. 运行兼容性和回归测试
在 Runtime 1.3 和 Runtime 2.0 上运行相同的代表性输入。 比较:
- 完成状态、日志、警告和重试。
- 模式和数据类型。
- 行级和汇总结果。
- Delta 表历史记录和协议。
- 流媒体进度、状态、延迟和重复处理。
- 执行时间、资源消耗和成本。
- 下游会导致 SQL 分析端点、Power BI、管道及其他使用方产生结果。
包括失败和恢复测试,而不仅仅是成功的运行。 测试会话重启、作业重试、检查点恢复以及对表的并发访问。
5. 发布运行时2.0
将工作负载按受控批次迁移:
- 发布经过验证的运行时2.0环境。
- 把它附加到一小部分生产笔记本或 Spark 作业定义上。
- 运行批次,监控输出和下游消费方。
- 观察期结束后继续完成剩余的工作量。
- 仅在项级迁移完成后,将运行时 2.0 设置为工作区默认。
更改工作区运行时会影响新的 Spark 会话。 现有的会话会继续使用当前运行时,直到停止。
6. 保持回滚路径
在运行时2.0观察期结束前,保持运行时1.3环境、工件、库规范和流检查点。 要回滚,请重新连接运行时1.3环境,或恢复之前的工作区运行时并启动新的Spark会话。
Important
Delta协议升级通常不可逆。 在完成运行时 2.0 验证并确认与每个表消费者兼容之前,不要启用那些会提高协议版本的表功能。
迁移清单
在完成迁移前,请确认:
- [ ] 所有必需的 Python 和 R 包都明确可用,并且兼容 Python 3.13 或 R 4.5。
- [ ] 自定义JAR文件针对Java 21、Scala 2.13和Spark 4.1。
- [ ] 原生依赖在 Azure Linux 3.0 上工作。
- [ ] 工作区、环境、笔记本和 Spark 作业定义设置都不使用已移除的 Spark 配置。
- [ ] 工作负载会根据已更新的运行时 2.0 Spark 配置默认值进行测试。
- [ ] Spark SQL 和 PySpark 回归测试通过。
- [ ] Event Hubs 工作负载使用 Kafka 连接器。
- [ ] 结构化流工作负载按设计重启和恢复。
- [ ] Delta 表协议和功能与所有使用方保持兼容。
- [ ] 数据质量、性能和成本结果都符合您的验收标准。
- [ ] 生产部署、监控和回滚程序均已形成文档并经过测试。