Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Fabric Runtime 2.0 é o mais recente runtime geralmente disponível (GA) e padrão para cargas de trabalho Apache Spark no Microsoft Fabric. Atualiza o sistema operativo, Java, Scala, Python, R, Apache Spark e Delta Lake. Como várias destas atualizações ultrapassam os limites das principais versões, valide os seus notebooks, definições de trabalhos do Spark, bibliotecas e pipelines de dados antes de mover cargas de trabalho de produção do Runtime 1.3.
Este guia descreve as alterações que podem afetar uma migração e fornece um processo em etapas para mover as suas cargas de trabalho para o Runtime 2.0.
O que mudou no Runtime 2.0
A tabela seguinte compara os componentes principais no Runtime 1.3 e no Runtime 2.0.
| Component | Tempo de Execução 1.3 | Runtime 2.0 | Consideração migratória |
|---|---|---|---|
| Fase de lançamento | Fim do suporte anunciado (EOSA) | disponibilidade geral | Migrar cargas de trabalho de produção para o tempo de execução GA suportado. |
| Apache Spark | 3.5.5 | 4.1.1 | Revê as alterações de comportamento do Spark 4.1 e as APIs removidas. |
| Lago Delta | 3.2 | 4.2 | Valide as funcionalidades das tabelas e a compatibilidade de protocolos em todas as cargas de trabalho Fabric que utilizam as suas tabelas. |
| Java | 11 | 21 | Reconstruir e testar bibliotecas Java e dependências da Interface Nativa Java (JNI). |
| Scala | 2.12.17 | 2.13.16 | Recompilar ficheiros Scala JAR para Scala 2.13. Os artefactos do Scala 2.12 e 2.13 não são binariamente compatíveis. |
| Python | 3.11 | 3.13 | Confirme que cada pacote Python fornece uma versão compatível com Python 3.13 e um wheel para Linux. |
| R | 4.4.1 | 4.5.2 | Reinstala e testa pacotes personalizados de R. O SparkR está obsoleto no Spark 4.1. |
| Sistema Operativo | Azure Linux 2.0 (Mariner 2.0) | Azure Linux 3.0 (Mariner 3.0) | Reconstruir bibliotecas nativas e binários personalizados para o Azure Linux 3.0. |
O Runtime 2.0 também oferece novas funcionalidades do Apache Spark 4.1, incluindo o tipo de dados VARIANT, funções SQL definidas pelo utilizador, variáveis de sessão, sintaxe de pipes, colação de strings, a API de Fonte de Dados Python, funções de tabela definidas pelo utilizador em Python, perfilagem unificada do PySpark e novas APIs de gestão de estado e depuração de Streaming Estruturado. Para uma visão geral, veja Runtime 2.0 no Fabric.
Rever alterações de compatibilidade
Reveja as seguintes áreas antes de mudar um espaço de trabalho ou ambiente para Runtime 2.0.
Bibliotecas integradas e personalizadas
O Runtime 2.0 removeu vários pacotes pré-instalados em Python e R que estavam disponíveis no Runtime 1.3. Reduzir o conjunto de pacotes por defeito mantém o ambiente de execução leve e reduz a superfície de ataque para potenciais incidentes de segurança. Um pacote que estava disponível sem configuração no Runtime 1.3 pode precisar de ser adicionado explicitamente ao seu ambiente Runtime 2.0.
Utilize o Library Manager para adicionar apenas os pacotes que a sua carga de trabalho exigir e depois guardar e publicar o ambiente. O Library Manager resolve as dependências necessárias do pacote, por isso não adicione individualmente cada dependência nos inventários seguintes. Não presuma que uma biblioteca está disponível ou que a sua versão se manteve inalterada:
- Compare os inventários dos pacotes Runtime 1.3 e Runtime 2.0 no repositório de versões do runtime do Fabric.
- Adicione PyPI, Conda, Maven, R ou bibliotecas personalizadas em falta a um ambiente e publique-o.
- Fixe as versões para cargas de trabalho de produção para que a resolução de dependências seja reproduzível.
- Confirma que os pacotes Python suportam Python 3.13. Pacotes com extensões nativas devem fornecer uma wheel Linux compatível ou compilar com sucesso no Azure Linux 3.0.
- Substituir as dependências do Scala 2.12 por artefactos do Scala 2.13. Os nomes de artefactos incluem frequentemente a versão binária de Scala, como
_2.12ou_2.13. - Recompile ficheiros JAR personalizados para Java 21, Scala 2.13 e Spark 4.1. Testar dependências transitivas para conflitos com bibliotecas fornecidas em tempo de execução.
- Reconstruir bibliotecas nativas personalizadas para Azure Linux 3.0.
O Fabric migra as especificações das bibliotecas quando se altera o runtime de um ambiente existente, mas não pode garantir que essas bibliotecas permaneçam compatíveis. A publicação falha quando a resolução de dependências encontra um conflito. Para opções de instalação de pacotes e modos de publicação, consulte Gerir bibliotecas em ambientes Fabric.
Pacotes removidos do ambiente predefinido
Os inventários seguintes incluem pacotes voltados para o utilizador e as suas dependências de baixo nível ou transitivas. Procura nestas listas pacotes que a tua carga de trabalho Runtime 1.3 utiliza. Se um pacote estiver listado, adicione uma versão compatível com Python 3.13 ou R 4.5 através do Gestor de Bibliotecas no seu ambiente Runtime 2.0.
Ambiente Python: pacotes 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 |
Ambiente Python: 24 pacotes 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 |
Ambiente R: 67 pacotes 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
Se a proteção de acesso de saída ou uma rede virtual gerida impedir o acesso a repositórios públicos, descarregue ficheiros wheel compatíveis ou aloje um espelho de pacotes. Para instruções, consulte Gerir bibliotecas com acesso limitado à rede no Fabric.
Alterações na configuração do Spark
O Runtime 2.0 adiciona e remove definições do Spark e altera alguns valores predefinidos. O Fabric também usa valores predefinidos diferentes do Apache Spark para algumas definições.
Antes de migrar, reveja as definições do Spark que configurou para os seus espaços de trabalho, ambientes, blocos de notas e definições de tarefas do Spark. Remova definições que já não são suportadas e teste cargas de trabalho que dependem de valores predefinidos alterados. Utilize os padrões de runtime, a menos que a documentação o oriente a mudar alguma definição.
Alterações notáveis nos valores padrão
A tabela seguinte lista alterações de base selecionadas. Não definido significa que a linha de base não define explicitamente um valor; não significa que a funcionalidade esteja desativada.
| Configuration | Valor de Runtime 1.3 | Valor de Runtime 2.0 | Consideração migratória |
|---|---|---|---|
spark.checkpoint.compress |
false |
true |
Os ficheiros de checkpoint são comprimidos por defeito. Validar a interoperabilidade dos pontos de controlo e o comportamento de armazenamento. |
spark.databricks.delta.optimizeWrite.enabled |
true |
Não definido | A propriedade não foi removida. Verifique o comportamento eficaz de escrita otimizada com as definições da sua tabela, sessão e perfil de recursos. |
spark.databricks.delta.optimizeWrite.partitioned.enabled |
false |
true |
Validar o débito de escrita e os tamanhos de ficheiros de saída para tabelas Delta particionadas. |
spark.hadoop.parquet.block.size |
1073741824 (1 GiB) |
134217728 (128 MiB) |
Os gravadores de parquet destinam-se a blocos mais pequenos. Valide o tamanho dos ficheiros e o desempenho das leituras subsequentes. |
spark.microsoft.delta.optimize.fast.enabled |
false |
true |
OPTIMIZE pode ignorar o processamento, a menos que sejam cumpridos critérios de contagem de ficheiros ou de tamanho estimado da compactação. Valide os resultados da manutenção. |
spark.microsoft.delta.optimize.fileLevelTarget.enabled |
false |
true |
Ficheiros que anteriormente atingiram pelo menos metade do seu tamanho alvo de compactação não são compactados novamente. Valide o layout do ficheiro após OPTIMIZE. |
spark.microsoft.delta.targetFileSize.adaptive.enabled |
false |
true |
A Delta calcula o tamanho alvo do ficheiro com base no tamanho da tabela. Valide os tamanhos dos ficheiros resultantes e o desempenho de leitura. |
spark.speculation.multiplier |
1.5 |
3 |
Uma tarefa tem de ser executada três vezes mais devagar do que a mediana antes de Spark a considerar para execução especulativa. |
spark.speculation.quantile |
0.75 |
0.9 |
O Spark aguarda que 90% das tarefas terminem antes de considerar a execução especulativa. |
spark.sql.files.maxPartitionBytes |
134217728 (128 MiB) |
536870912 (512 MiB) |
As análises de ficheiros podem condensar mais dados em cada partição. Valide o paralelismo e o uso da memória do executor. |
spark.sql.maxSinglePartitionBytes |
Long.MaxValue |
128m |
Uma única partição está limitada por defeito a 128 MiB. Valide consultas que produzam uma única partição grande. |
spark.sql.orc.compression.codec |
snappy |
zstd |
As novas escritas ORC usam compressão Zstandard por defeito. Validar a compatibilidade e o desempenho com leitores subsequentes. |
spark.sql.sources.v2.bucketing.enabled |
false |
true |
O Spark permite por defeito joins particionados por armazenamento e outros comportamentos de bucketing da Data Source V2. Valide os planos e resultados da consulta. |
spark.sql.sources.v2.bucketing.pushPartValues.enabled |
false |
true |
O Spark pode enviar valores de partição compatíveis para o bucketing da Data Source V2. Valide planos de consulta para tabelas segmentadas em buckets. |
Runtime 2.0 também usa ROCKSDB em vez de LEVELDB para spark.shuffle.service.db.backend e define spark.shuffle.service.removeShuffle para true. O Spark utiliza o serviço externo de shuffle para eliminar blocos de shuffle desnecessários para executores desalocados.
O carregamento paralelo de snapshots Delta, o salto paralelo de dados e o carregamento de snapshots do lado do driver também mudam de false para true. Teste a latência das consultas e a utilização de recursos do driver, especialmente para consultas que acedam a múltiplas tabelas Delta.
Overrides de início de sessão e execução nativa
As implementações de funcionalidades do Fabric podem substituir os valores predefinidos quando uma sessão começa.
| Configuration | Valor base do runtime 2.0 | Valor de início de sessão do Runtime 2.0 em regiões públicas de produção | Consideração migratória |
|---|---|---|---|
spark.gluten.sql.columnar.costBasedFallback.enabled |
false |
true |
A implementação em produção registada a 16 de outubro de 2026 permite um recurso ao Spark baseado em custos. Verifique novamente os planos de consulta e o desempenho, incluindo as cargas de trabalho testadas antes dessa implementação. |
spark.sql.parquet.native.writer.complexTypes.enabled |
false |
true |
Teste as escritas nativas do Parquet e as leituras a jusante para arrays, mapas e structs. |
Quando usar o motor de execução nativo, inclua as seguintes verificações nos seus testes de regressão:
- Validar o uso da memória com o valor predefinido do tamanho do lote colunar a aumentar de 4.096 para 10.240.
- Compare os planos de shuffle e o desempenho com o limiar de shuffle colunar baseado em ordenação, que diminui de 100.000 para 4.000 partições.
- Compare os resultados e o desempenho de expressões regulares. O suporte para regex Java do motor nativo muda de desativado para ativado, e a definição que reencaminha todas as expressões regex para o Spark muda de
trueparafalse.
As predefinições do Apache Spark 4.1 são mantidas de forma diferente no Fabric
O Fabric Runtime 2.0 sobrepõe intencionalmente as seguintes predefinições do Apache Spark 4.1. Não presuma que um padrão upstream do Spark 4.1 se aplica sem alterações no Fabric.
| Configuration | Apache Spark 4.1 por defeito | Valor do 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 |
Comportamento do SQL Spark e DataFrame
O Spark 4.1 introduz alterações de comportamento que podem alterar os resultados das consultas ou fazer com que consultas previamente aceites falhem. Preste especial atenção ao comportamento do SQL ANSI, casts, operações de data e timestamp, tipos de dados, mapeamentos JDBC e configurações SQL obsoletas.
Execute testes de regressão que comparem:
- Esquemas de saída, incluindo tipo, precisão, escala e anulabilidade.
- Contagens de linhas e resultados agregados.
- Comportamento null, comportamento de overflow, comportamento de divisão por zero e comportamento de invalid-cast.
- data, carimbo temporal, fuso horário e resultados de intervalo.
- Mapeamentos de tipo de source e sink do JDBC.
- Planos de consulta e desempenho para cargas de trabalho críticas.
Não uses definições de compatibilidade legadas como estratégia de migração permanente. Se usares temporariamente uma para isolar uma falha, atualiza o código afetado e remove a definição antes de completar a migração. Para o conjunto completo de alterações de comportamento, consulte o guia de migração SQL do Spark.
API de Python e pandas no Spark
O Runtime 2.0 passa do Python 3.11 para o Python 3.13 e inclui as alterações ao PySpark introduzidas no Spark 4.1. O Spark 4.1 também eleva as versões mínimas suportadas de pandas, NumPy e PyArrow e remove APIs que estavam obsoletas em versões anteriores.
As atualizações comuns do pandas API on Spark incluem:
- Substitua
DataFrame.iteritemseSeries.iteritemsporitems. - Substitua
DataFrame.appendeSeries.appendporps.concat. - Substituir parâmetros removidos
inplacede operações categóricas por atribuições. - Revê os nomes e os valores predefinidos dos parâmetros alterados, como
inclusiveeSeries.str.replace(regex=...). - Validar nomes de colunas de resultados, nomes de índice, dtypes e ordenação.
Para a lista completa, consulte o guia de migração do PySpark.
Aplicações Java e Scala
O Scala 2.13 não é binariamente compatível com o Scala 2.12. Reutilizar um JAR de Runtime 1.3 em Runtime 2.0 pode causar erros de carregamento de classe mesmo quando o código-fonte não mudou. Construir um artefacto Runtime 2.0 separado e atualizar todas as dependências cross-built do Scala.
O Spark 4.1 também altera as referências internas da API dos servlets de javax para jakarta. Revise listeners personalizados, extensões Spark e bibliotecas que interajam com os componentes internos do Spark. Para outras alterações ao nível do motor, consulte o guia de migração do Spark Core.
Cargas de trabalho e conectores de streaming
O elemento obsoleto EventHubConnector incluído no Runtime 1.3 não está disponível no Runtime 2.0. Utilize o conector Apache Spark Kafka com o ponto final compatível com Kafka para o Hubs de Eventos do Azure. Para orientações de configuração, consulte Utilizar o Apache Spark com os Hubs de Eventos do Azure para o Apache Kafka.
Para cenários aplicáveis, também pode avaliar o Fabric eventstream para ingerir dados de streaming e processá-los num caderno com o Spark Structured Streaming. Para mais informações, consulte Consultar eventstream em Microsoft Fabric a partir de um caderno com Spark Structured Streaming.
Para cada carga de trabalho de Streaming Estruturado:
- Teste se a consulta Runtime 2.0 pode reiniciar a partir de uma cópia do checkpoint existente.
- Validar operações com estado, marcas de água em tempo de evento, triggers, opções de origem e sink, e esquemas de saída.
- Mantenha os dados de origem e o checkpoint original disponíveis até a validação estar concluída.
- Se um ponto de controlo for incompatível, planeie um reinício controlado com um novo ponto de controlo. Tem em conta as entradas repetidas ou saltadas, e faz com que o destino seja idempotente antes de recomeçares.
Consulte o guia de migração do Structured Streaming para alterações de compatibilidade ascendente.
Tabelas do Delta Lake
O Delta Lake mantém a compatibilidade retroativa para tabelas existentes, pelo que o Runtime 2.0 pode funcionar com tabelas criadas pelo Runtime 1.3. No entanto, ativar uma funcionalidade de tabela mais recente pode elevar o protocolo de leitura ou de escrita da tabela e impedir que motores antigos ou outras experiências Fabric utilizem a tabela.
Durante a migração inicial em tempo de execução:
- Não atualize os protocolos de tabela nem ative as funcionalidades do Delta Lake 4.2.
- Inspecionar as funcionalidades e versões do protocolo das tabelas recém-criadas, bem como das tabelas existentes. O Runtime 2.0 define
spark.databricks.delta.properties.defaults.enableDeletionVectorsparatrue; verificar os metadados resultantes da tabela em vez de assumir que evitar a ativação manual de funcionalidades preserva a compatibilidade. - Teste leituras, escritas, fusões, evolução de esquemas, operações de manutenção e acesso concorrente.
- Identifique todos os motores que leem ou escrevem cada tabela, incluindo o endpoint de análise SQL, Power BI, pipelines, fluxos de dados, fluxos de eventos e motores externos.
- Ative uma nova funcionalidade Delta apenas depois de todos os consumidores a suportarem.
As funcionalidades específicas do Delta Lake 4.2 são experimentais no Fabric e limitam-se às experiências Spark. Para a matriz de suporte e as versões predefinidas do protocolo, veja Interoperabilidade do formato de tabela Delta Lake.
Migre as suas cargas de trabalho
Use uma migração em fases em vez de alterar imediatamente o runtime de um espaço de trabalho de produção.
1. Inventariar as cargas de trabalho do Runtime 1.3
Registe as seguintes informações:
- Notebooks, definições de trabalhos no Spark, pipelines, agendas e itens dependentes.
- Atribuições ao nível da área de trabalho e ao nível do item.
- Configurações do Spark, incluindo quaisquer definições de compatibilidade legadas.
- Bibliotecas públicas, privadas e personalizadas e as suas versões resolvidas.
- Ficheiros JAR personalizados, pacotes wheel do Python, pacotes R, bibliotecas nativas e lógica de inicialização.
- Fontes de dados, destinos, credenciais, ligações e requisitos de rede.
- Tabelas Delta e todos os consumidores não Spark dessas tabelas.
- Checkpoints de streaming, esquemas, offsets e requisitos de recuperação.
- Esquemas de saída esperados, contagens de linhas, verificações de qualidade de dados e referências de desempenho.
Prioriza cargas de trabalho que usem bibliotecas personalizadas, código nativo, Scala, estado de streaming ou funcionalidades avançadas da Delta.
2. Criar um ambiente de teste Runtime 2.0
Crie um item de ambiente separado e selecione 2.0 (Spark 4.1, Delta 4.2) como runtime. Adiciona as bibliotecas necessárias, guarda o ambiente e publica-o. Anexe o ambiente a cópias de notebooks representativos e definições de tarefas do Spark num espaço de trabalho de desenvolvimento ou teste.
Se o seu espaço de trabalho de produção ainda utiliza o Runtime 1.3, não altere o Runtime até os testes estarem concluídos. Mantenha a configuração existente disponível para reversão durante a validação.
Para validar as próximas atualizações do Runtime 2.0 antes que cheguem ao canal predefinido, use o canal de acesso antecipado no seu ambiente de teste. Para mais informações, consulte os canais de lançamento em tempo de execução do Fabric.
3. Atualizar bibliotecas e código
Aplique as alterações identificadas na revisão de compatibilidade:
- Substituir os pacotes incorporados em falta por dependências explícitas do ambiente.
- Atualize ou substitua pacotes que não suportem Python 3.13, Java 21, Scala 2.13 ou Azure Linux 3.0.
- Reconstruir ficheiros JAR personalizados e binários nativos.
- A atualização removeu a API do PySpark e do pandas nas chamadas Spark.
- Substitua
EventHubConnectorpelo conector Kafka. - Remover as definições do Spark para configurações que não estão disponíveis no Runtime 2.0 e rever as sobreposições explícitas de configurações cujos valores predefinidos foram alterados.
- Resolva diferenças de comportamento do Spark SQL no código em vez de depender permanentemente de definições legadas.
- Mantenha as funcionalidades e protocolos da tabela Delta existentes inalterados durante esta fase.
4. Executar testes de compatibilidade e regressão
Execute as mesmas entradas representativas no Runtime 1.3 e no Runtime 2.0. Comparar:
- Estado de conclusão, registos, avisos e novas tentativas.
- Esquemas e tipos de dados.
- Resultados ao nível da linha e resultados agregados.
- Histórico e protocolo da tabela Delta.
- Progresso do streaming, estado, latência e tratamento de duplicados.
- Tempo de execução, utilização de recursos e custo.
- Resultados a jusante no endpoint de análise SQL, no Power BI, em pipelines e noutros consumidores.
Inclua testes de falha e recuperação, não apenas execuções bem-sucedidas. Reinícios de sessões de teste, novas tentativas de tarefa, recuperação de checkpoint e acesso simultâneo a tabelas.
5. Lançar o Runtime 2.0
Transferir cargas de trabalho em lotes controlados:
- Publique o ambiente validado do Runtime 2.0.
- Anexe-o a um pequeno conjunto de notebooks de produção ou definições de trabalhos Spark.
- Executa o lote e monitoriza as saídas e os consumidores a jusante.
- Continuar com as restantes cargas de trabalho após o período de observação.
- Defina o Runtime 2.0 como o padrão do espaço de trabalho apenas após a migração ao nível do item estar concluída.
Alterar o tempo de execução do workspace afeta as novas sessões do Spark. As sessões existentes continuam a usar o seu runtime atual até pararem.
6. Manter um plano de reversão
Mantém o ambiente do Runtime 1.3, artefactos, especificações da biblioteca e checkpoints de streaming até ao fim do período de observação do Runtime 2.0. Para reverter, volte a anexar o ambiente Runtime 1.3 ou restaure o tempo de execução do workspace anterior e inicie uma nova sessão Spark.
Importante
Uma atualização do protocolo Delta normalmente não é reversível. Não ative funcionalidades de tabela que elevem o protocolo até ter concluído a validação do Runtime 2.0 e confirmado a compatibilidade com todos os consumidores de tabelas.
Lista de verificação da migração
Antes de concluir a migração, confirme que:
- [ ] Todos os pacotes Python e R necessários estão explicitamente disponíveis e são compatíveis com Python 3.13 ou R 4.5.
- [ ] Ficheiros JAR personalizados têm como alvo Java 21, Scala 2.13 e Spark 4.1.
- [ ] As dependências nativas funcionam no Azure Linux 3.0.
- [ ] Espaço de trabalho, ambiente, caderno e definições de funções do Spark não usam configurações removidas do Spark.
- [ ] As cargas de trabalho são testadas com base nas predefinições alteradas da configuração do Spark Runtime 2.0.
- [ ] Os testes de regressão SQL Spark e PySpark passam.
- [ ] As cargas de trabalho dos Event Hubs usam o conector Kafka.
- [ ] As cargas de trabalho de Streaming Estruturado reiniciam e recuperam conforme projetado.
- [ ] Os protocolos e funcionalidades da tabela Delta mantêm-se compatíveis com todos os consumidores.
- [ ] Os resultados de qualidade dos dados, desempenho e custos cumprem os seus critérios de aceitação.
- [ ] Os procedimentos de lançamento, monitorização e rollback em produção são documentados e testados.