Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Fabric Runtime 2.0 è l'ultima runtime generalmente disponibile (GA) e predefinita per i carichi di lavoro di Apache Spark in Microsoft Fabric. Aggiorna il sistema operativo, Java, Scala, Python, R, Apache Spark e Delta Lake. Poiché diversi di questi aggiornamenti attraversano i limiti tra versioni principali, convalida i tuoi notebook, le definizioni di job di Spark, le librerie e le pipeline di dati prima di spostare i carichi di lavoro di produzione da Runtime 1.3.
Questa guida descrive le modifiche che possono influenzare una migrazione e fornisce un processo a fasi per spostare i carichi di lavoro su Runtime 2.0.
Cosa è cambiato in Runtime 2.0
La tabella seguente confronta i componenti principali in Runtime 1.3 e Runtime 2.0.
| Component | Runtime 1.3 | Runtime 2.0 | Considerazioni sulla migrazione |
|---|---|---|---|
| Fase di rilascio | Fine del supporto annunciato (EOSA) | GA | Esegui la migrazione dei carichi di lavoro di produzione verso il runtime GA supportato. |
| Apache Spark | 3.5.5 | 4.1.1 | Rivedi i cambiamenti comportamentali di Spark 4.1 e le API rimosse. |
| Delta Lake | 3.2 | 4.2 | Valida le caratteristiche delle tabelle e la compatibilità dei protocolli su ogni carico di lavoro Fabric che utilizza le tue tabelle. |
| Java | 11 | 21 | Ricostruire e testare le librerie Java e le dipendenze dell'interfaccia nativa Java (JNI). |
| Scala | 2.12.17 | 2.13.16 | Ricompila i file JAR di Scala per Scala 2.13. Gli artefatti di Scala 2.12 e 2.13 non sono compatibili a livello binario. |
| Python | 3.11 | 3.13 | Conferma che ogni pacchetto Python fornisca una versione compatibile con Python 3.13 e un wheel Linux. |
| R | 4.4.1 | 4.5.2 | Reinstalla e testa pacchetti personalizzati R. SparkR è deprecato in Spark 4.1. |
| Sistema operativo | Azure Linux 2.0 (Mariner 2.0) | Azure Linux 3.0 (Mariner 3.0) | Ricostruisci librerie native e binari personalizzati per Azure Linux 3.0. |
Runtime 2.0 offre anche nuove funzionalità di Apache Spark 4.1, inclusi il tipo di dato VARIANT, funzioni SQL definite dall'utente, variabili di sessione, sintassi dei pipe, collation delle stringhe, API Python Data Source, funzioni di tabella definite dall'utente in Python, profilazione unificata PySpark e nuove API di gestione dello stato e debug per lo streaming strutturato. Per una panoramica, vedi Runtime 2.0 in Fabric.
Rivedi i cambiamenti di compatibilità
Esamina le seguenti aree prima di cambiare uno spazio di lavoro o un ambiente a Runtime 2.0.
Librerie integrate e personalizzate
Runtime 2.0 rimuove diversi pacchetti Python e R preinstallati che erano disponibili in Runtime 1.3. Ridurre il set di package predefinito mantiene il runtime snello e riduce la superficie di attacco per potenziali incidenti di sicurezza. Un pacchetto disponibile senza configurazione in Runtime 1.3 potrebbe dover essere aggiunto esplicitamente al tuo ambiente Runtime 2.0.
Usa Library Manager per aggiungere solo i pacchetti richiesti dal tuo carico di lavoro, poi salva e pubblica l'ambiente. Library Manager risolve le dipendenze richieste del pacchetto, quindi non aggiungere ogni dipendenza negli elenchi seguenti singolarmente. Non dare per scontato che una libreria sia disponibile o che la sua versione sia invariata:
- Confronta gli inventari dei pacchetti Runtime 1.3 e Runtime 2.0 nel repository delle versioni di runtime Fabric.
- Aggiungi le librerie PyPI, Conda, Maven, R o personalizzate mancanti in un ambiente e pubblicalo.
- Blocca le versioni per i carichi di lavoro di produzione per rendere la risoluzione delle dipendenze ripetibile.
- Conferma che i pacchetti Python supportino Python 3.13. I pacchetti con estensioni native devono fornire un wheel Linux compatibile o compilare con successo su Azure Linux 3.0.
- Sostituire le dipendenze di Scala 2.12 con artefatti di Scala 2.13. I nomi degli artefatti includono comunemente la versione binaria di Scala, come
_2.12o_2.13. - Ricompila file JAR personalizzati con Java 21, Scala 2.13 e Spark 4.1. Testare le dipendenze transitive per trovare conflitti con le librerie fornite in runtime.
- Ricostruisci librerie native personalizzate per Azure Linux 3.0.
Fabric migra le specifiche delle librerie quando cambi il runtime di un ambiente esistente, ma non può garantire che quelle librerie rimangano compatibili. La pubblicazione fallisce quando la risoluzione delle dipendenze trova un conflitto. Per le opzioni di installazione dei pacchetti e le modalità di pubblicazione, vedi Gestire librerie negli ambienti Fabric.
Pacchetti rimossi dall'ambiente predefinito
I seguenti inventari includono pacchetti rivolti all'utente e le loro dipendenze di basso livello o transitive. Cerca in queste liste i pacchetti utilizzati dal tuo carico di lavoro Runtime 1.3. Se è elencato un pacchetto, aggiungi una versione compatibile con Python 3.13 o compatibile con R 4.5 tramite Library Manager nel tuo ambiente Runtime 2.0.
Ambiente Python: pacchetti 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 pacchetti 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: pacchetti 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
Se la protezione degli accessi in uscita o una rete virtuale gestita impediscono l'accesso a repository pubblici, scarica file wheel compatibili o ospita un mirror del pacchetto. Per le istruzioni, vedi Gestire librerie con accesso limitato alla rete in Fabric.
Modifiche alla configurazione di Spark
Runtime 2.0 aggiunge e rimuove le impostazioni di Spark e modifica alcuni valori predefiniti. Fabric usa anche impostazioni predefinite diverse da quelle di Apache Spark per alcune impostazioni.
Prima di migrare, controlla le impostazioni di Spark che hai configurato per i tuoi workspace, ambienti, notebook e definizioni di job di Spark. Rimuovi le impostazioni non più supportate e testa i carichi di lavoro che dipendono da impostazioni predefinite modificate. Usa i valori predefiniti di runtime, a meno che la documentazione non ti dica di cambiare un'impostazione.
Cambiamenti notevoli dei valori predefiniti
La tabella seguente elenca alcune modifiche di base. Non impostato significa che la linea di base non imposta esplicitamente un valore; non significa che la funzione sia disabilitata.
| Configuration | Valore runtime 1.3 | Valore di Runtime 2.0 | Considerazioni sulla migrazione |
|---|---|---|---|
spark.checkpoint.compress |
false |
true |
I file dei checkpoint sono compressi di default. Convalida l'interoperabilità dei checkpoint e il comportamento di archiviazione. |
spark.databricks.delta.optimizeWrite.enabled |
true |
Non impostato | La proprietà non viene rimossa. Verifica un comportamento efficace di scrittura ottimizzata con le impostazioni della tabella, della sessione e del profilo risorsa. |
spark.databricks.delta.optimizeWrite.partitioned.enabled |
false |
true |
Valida la velocità di scrittura e le dimensioni dei file di output per le tabelle Delta partizionate. |
spark.hadoop.parquet.block.size |
1073741824 (1 GiB) |
134217728 (128 MiB) |
I writer Parquet puntano a blocchi più piccoli. Valida le dimensioni dei file e le prestazioni di lettura dei processi successivi. |
spark.microsoft.delta.optimize.fast.enabled |
false |
true |
OPTIMIZE può saltare il lavoro a meno che non vengano soddisfatti criteri di conteggio dei file o dimensioni di compattazione stimate. Valida i risultati della manutenzione. |
spark.microsoft.delta.optimize.fileLevelTarget.enabled |
false |
true |
I file che in precedenza raggiungevano almeno la metà della loro dimensione target di compattazione non vengono compattati di nuovo. Valida il layout dei file dopo OPTIMIZE. |
spark.microsoft.delta.targetFileSize.adaptive.enabled |
false |
true |
Delta calcola la dimensione target del file in base alla dimensione della tabella. Validare le dimensioni risultanti dei file e le prestazioni di lettura. |
spark.speculation.multiplier |
1.5 |
3 |
Un compito deve essere eseguito tre volte più lentamente della mediana prima che Spark lo consideri per un'esecuzione speculativa. |
spark.speculation.quantile |
0.75 |
0.9 |
Spark aspetta che vengano completati 90% di compiti prima di considerare l'esecuzione speculativa. |
spark.sql.files.maxPartitionBytes |
134217728 (128 MiB) |
536870912 (512 MiB) |
Le scansioni dei file possono contenere più dati in ogni partizione. Valida il parallelismo e l'uso della memoria dell'executor. |
spark.sql.maxSinglePartitionBytes |
Long.MaxValue |
128m |
Una singola partizione è limitata di default a 128 MiB. Valida le query che producono grandi partizioni singole. |
spark.sql.orc.compression.codec |
snappy |
zstd |
Le nuove scritture ORC utilizzano di default la compressione Zstandard. Valida la compatibilità e le prestazioni con i lettori downstream. |
spark.sql.sources.v2.bucketing.enabled |
false |
true |
Spark consente per impostazione predefinita i join partizionati per l'archiviazione e altri comportamenti di bucketing di Data Source V2. Valida i piani di query e i risultati delle query. |
spark.sql.sources.v2.bucketing.pushPartValues.enabled |
false |
true |
Spark può propagare valori di partizione compatibili per il bucketing Data Source V2. Valida i piani di query per le tabelle partizionate in bucket. |
Runtime 2.0 usa ROCKSDB anche al posto di LEVELDB per spark.shuffle.service.db.backend e imposta spark.shuffle.service.removeShuffle a true. Spark utilizza il servizio shuffle esterno per eliminare i blocchi shuffle non necessari per gli esecutori disallocati.
Il caricamento parallelo delta degli snapshot, il salto parallelo dei dati e il caricamento snapshot lato driver cambiano anch'essi da false a true. Verifica la latenza delle query e l'utilizzo delle risorse del driver, specialmente per le query che accedono a più tabelle Delta.
Override di inizio sessione ed esecuzione nativa
Le distribuzioni delle funzionalità di Fabric possono sovrascrivere i valori di base all'avvio di una sessione.
| Configuration | Valore di base runtime 2.0 | Valore di inizio sessione runtime 2.0 nelle regioni pubbliche di produzione | Considerazioni sulla migrazione |
|---|---|---|---|
spark.gluten.sql.columnar.costBasedFallback.enabled |
false |
true |
Il lancio della produzione registrato il 16 ottobre 2026 consente un meccanismo di fallback basato sui costi per Spark. Controlla i piani delle query e le prestazioni, inclusi i carichi di lavoro testati prima di quel rilascio. |
spark.sql.parquet.native.writer.complexTypes.enabled |
false |
true |
Testa le scritture native di Parquet e le letture a valle per array, mappe e struct. |
Quando utilizzi il motore di esecuzione nativo, includi i seguenti controlli nei tuoi test di regressione:
- Valida l'uso della memoria con la dimensione predefinita del batch colonnare che aumenta da 4.096 a 10.240.
- Confronta i piani e le prestazioni di shuffle con la soglia di shuffle colonnare basata su ordinamento che scende da 100.000 a 4.000 partizioni.
- Confronta i risultati e le prestazioni delle espressioni regolari. Il supporto regex Java con motore nativo cambia da disabilitato ad abilitato, e l'impostazione che reindirizza come fallback tutte le espressioni regolari a Spark cambia da
trueafalse.
Le impostazioni predefinite di Apache Spark 4.1 sono mantenute in modo diverso in Fabric
Fabric Runtime 2.0 sovrascrive intenzionalmente i seguenti valori predefiniti di Apache Spark 4.1. Non dare per scontato che un default upstream 4.1 di Spark valga invariato in Fabric.
| Configuration | Default di Apache Spark 4.1 | Valore di 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 di Spark SQL e DataFrame
Spark 4.1 introduce cambiamenti comportamentali che possono modificare i risultati delle query o causare l'errore di query precedentemente accettate. Presta particolare attenzione al comportamento ANSI SQL, ai cast, alle operazioni di data e timestamp, ai tipi di dati, alle mappature JDBC e alle configurazioni SQL obsolete.
Esegui test di regressione che confrontino:
- Schemi di output, inclusi tipo, precisione, scala e nullabilità.
- Conteggio delle righe e risultati aggregati.
- Comportamento di null, overflow, division-by-zero e invalid-cast.
- Date, timestamp, fuso orario e risultati degli intervalli.
- Mappe di tipo sorgente e sink JDBC.
- Piani di query e prestazioni per carichi di lavoro critici.
Non usare le impostazioni di compatibilità legacy come strategia di migrazione permanente. Se ne usi temporaneamente uno per isolare un guasto, aggiorna il codice interessato e rimuovi l'impostazione prima di completare la migrazione. Per l'insieme completo dei cambiamenti di comportamento, consulta la guida alla migrazione SQL di Spark.
API Python e pandas su Spark
Runtime 2.0 passa da Python 3.11 a Python 3.13 e include le modifiche a PySpark introdotte in Spark 4.1. Spark 4.1 alza anche le versioni minime supportate di pandas, NumPy e PyArrow e rimuove le API che erano state deprecate nelle versioni precedenti.
Gli aggiornamenti comuni dell'API pandas su Spark includono:
- Sostituisci
DataFrame.iteritemseSeries.iteritemsconitems. - Sostituisci
DataFrame.appendeSeries.appendconps.concat. - Sostituire i parametri rimossi
inplacenelle operazioni categoriali con assegnazioni. - Rivedi i nomi dei parametri e le impostazioni predefinite modificate, come
inclusiveeSeries.str.replace(regex=...). - Valida i nomi delle colonne dei risultati, i nomi degli indici, i dtypes e l'ordine.
Per l'elenco completo, consulta la guida alla migrazione di PySpark.
Applicazioni Java e Scala
Scala 2.13 non è compatibile a livello binario con Scala 2.12. Il riutilizzo di un JAR di runtime 1.3 in runtime 2.0 può causare errori di caricamento di classe anche quando il codice sorgente non è cambiato. Crea un artefatto separato per Runtime 2.0 e aggiorna tutte le dipendenze cross-built di Scala.
Spark 4.1 modifica anche i suoi riferimenti API dei servlet interni da javax a jakarta. Esamina ascoltatori personalizzati, estensioni Spark e librerie che interagiscono con gli interni di Spark. Per altre modifiche a livello di motore, consulta la guida alla migrazione di Spark Core.
Carichi di lavoro e connettori in streaming
L'elemento deprecato EventHubConnector incluso in Runtime 1.3 non è disponibile in Runtime 2.0. Usa il connettore Apache Spark Kafka con l'endpoint compatibile con Kafka per Hub eventi di Azure. Per indicazioni sulla configurazione, vedi Use Apache Spark with Hub eventi di Azure for Apache Kafka.
Per scenari applicabili, puoi anche valutare Fabric eventstream per acquisire dati in streaming e processarli in un notebook con Spark Structured Streaming. Per maggiori informazioni, consulta Query eventstream in Microsoft Fabric da un notebook con Spark Structured Streaming.
Per ogni carico di lavoro di streaming strutturato:
- Verifica se la query Runtime 2.0 può riavviarsi da una copia del checkpoint esistente.
- Convalida operazioni stateful, filigrane a tempo di evento, trigger, opzioni sorgente e sink e schemi di output.
- Mantenere disponibili i dati di origine e il checkpoint originale fino al completamento della validazione.
- Se un checkpoint non è compatibile, pianifica un riavvio controllato con un nuovo checkpoint. Tieni conto dell'input rigiocato o saltato, e rendi il sink idempotente prima di riavviare.
Consulta la guida alla migrazione dello Structured Streaming per le modifiche di compatibilità a monte.
Tabelle Delta Lake
Delta Lake mantiene la retrocompatibilità per le tabelle esistenti, quindi Runtime 2.0 può funzionare con tabelle create da Runtime 1.3. Tuttavia, abilitare una funzionalità più recente della tabella può aumentare il protocollo di lettura o scrittura della tabella e impedire ai motori più vecchi o ad altre esperienze di Fabric di utilizzare la tabella.
Durante la migrazione iniziale in runtime:
- Non aggiornare i protocolli di tabella né abilitare le funzionalità di Delta Lake 4.2.
- Ispezionare le caratteristiche e le versioni del protocollo delle tabelle appena create così come delle tabelle esistenti. Il runtime 2.0 imposta
spark.databricks.delta.properties.defaults.enableDeletionVectorsatrue; verifica i metadati della tabella risultanti invece di assumere che evitare l'abilitazione manuale delle funzionalità preservi la compatibilità. - Test letture, scritture, fusioni, evoluzione dello schema, operazioni di manutenzione e accesso concorrente.
- Identifica ogni motore che legge o scrive ogni tabella, inclusi l'endpoint di analisi SQL, Power BI, pipeline, flussi di dati, flussi di eventi e motori esterni.
- Abilita una nuova funzione Delta solo dopo che tutti i consumatori la supportano.
Le funzionalità specifiche per Delta Lake 4.2 sono sperimentali in Fabric e limitate alle esperienze Spark. Per la matrice di supporto e le versioni del protocollo predefinite, vedi Interoperabilità del formato di tabella Delta Lake.
Migra i carichi di lavoro
Usa una migrazione a stadi invece di cambiare immediatamente l'runtime di uno spazio di lavoro di produzione.
1. Inventaria i carichi di lavoro di Runtime 1.3
Registrare le informazioni seguenti:
- Notebook, definizioni di job Spark, pipeline, programmi e elementi dipendenti.
- Assegnazioni di ambiente a livello di spazio di lavoro e a livello di elemento.
- Configurazioni di Spark, incluse eventuali impostazioni di compatibilità legacy.
- Librerie pubbliche, private e personalizzate e le loro versioni risolte.
- File JAR personalizzati, wheel Python, pacchetti R, librerie native e logica di inizializzazione.
- Fonti dati, destinazioni, secrets, connessioni e requisiti di rete.
- Tabelle Delta e tutti i consumatori non Spark di quelle tabelle.
- Checkpoint di streaming, schemi, offset e requisiti di recupero.
- Schemi di output attesi, conteggio delle righe, controlli di qualità dei dati e parametri di prestazione.
Dai priorità ai carichi di lavoro che utilizzano librerie personalizzate, codice nativo, Scala, stato di streaming o funzionalità avanzate di Delta.
2. Creare un ambiente di test Runtime 2.0
Crea un elemento di ambiente separato e seleziona 2.0 (Spark 4.1, Delta 4.2) come ambiente di runtime. Aggiungi le librerie necessarie, salva l'ambiente e pubblicalo. Allega l'ambiente a copie di quaderni rappresentativi e definizioni di job Spark in uno spazio di sviluppo o test.
Se il tuo workspace di produzione utilizza ancora Runtime 1.3, non cambiare il runtime finché i test non sono completati. Mantieni la configurazione esistente disponibile per il rollback durante la validazione.
Per convalidare i prossimi aggiornamenti di Runtime 2.0 prima che raggiungano il canale predefinito, usa il canale di rilascio anticipato nel tuo ambiente di test. Per maggiori informazioni, consulta i canali di rilascio del runtime di Fabric.
3. Aggiornare librerie e codice
Applica le modifiche identificate nella revisione di compatibilità:
- Sostituire i pacchetti integrati mancanti con dipendenze esplicite dell'ambiente.
- Aggiorna o sostituisci pacchetti che non supportano Python 3.13, Java 21, Scala 2.13 o Azure Linux 3.0.
- Ricostruisci file JAR personalizzati e binari nativi.
- L'aggiornamento ha rimosso PySpark e l'API pandas nelle invocazioni di Spark.
- Sostituisci
EventHubConnectorcon il connettore Kafka. - Rimuovi le impostazioni di Spark per le configurazioni non disponibili in Runtime 2.0 e rivedi le sovrascritture esplicite delle configurazioni le cui impostazioni predefinite sono cambiate.
- Risolvi le differenze di comportamento SQL di Spark nel codice invece di affidarti permanentemente alle impostazioni legacy.
- Mantieni invariate le caratteristiche e i protocolli della tabella Delta esistenti durante questa fase.
4. Eseguire test di compatibilità e regressione
Esegui gli stessi input rappresentativi su Runtime 1.3 e Runtime 2.0. Confrontare:
- Stato del completamento, log, avvisi e nuovi tentativi.
- Schemi e tipi di dati.
- Risultati a livello di riga e aggregati.
- Storia e protocollo della tabella Delta.
- Progresso dello streaming, stato, latenza e gestione dei duplicati.
- Tempo di esecuzione, utilizzo delle risorse e costi.
- Il downstream produce risultati nell'endpoint di analisi SQL, in Power BI, nelle pipeline e in altri strumenti.
Includi test di fallimento e recupero, non solo esecuzioni riuscite. Riavvii delle sessioni di test, nuovi tentativi del processo, recupero dei checkpoint e accesso simultaneo alle tabelle.
5. Distribuisci Runtime 2.0
Sposta i carichi di lavoro in lotti controllati:
- Pubblica l'ambiente Runtime 2.0 validato.
- Allegalo a un piccolo set di notebook di produzione o definizioni di job Spark.
- Esegui i batch e monitora gli output e i consumatori a valle.
- Continua con i restanti carichi di lavoro dopo il periodo di osservazione.
- Imposta Runtime 2.0 come workspace predefinito solo dopo il completamento della migrazione a livello di elemento.
Cambiare il runtime dello spazio di lavoro influisce sulle nuove sessioni Spark. Le sessioni esistenti continuano a usare il loro runtime attuale fino a quando non si fermano.
6. Mantenere un percorso di rollback
Mantieni l'ambiente Runtime 1.3, gli artefatti, le specifiche delle librerie e i checkpoint di streaming fino alla fine del periodo di osservazione Runtime 2.0. Per tornare indietro, ricollega l'ambiente Runtime 1.3 o ripristina il runtime precedente dello spazio di lavoro e avvia una nuova sessione Spark.
Important
Un aggiornamento del protocollo Delta generalmente non è reversibile. Non abilitare le funzionalità di tabella che aumentano il protocollo finché non hai completato la validazione di Runtime 2.0 e confermato la compatibilità con ogni consumer della tabella.
Elenco di controllo per la migrazione
Prima di completare la migrazione, conferma che:
- [ ] Ogni pacchetto Python e R richiesto è esplicitamente disponibile e compatibile con Python 3.13 o R 4.5.
- [ ] I file JAR personalizzati sono destinati a Java 21, Scala 2.13 e Spark 4.1.
- [ ] Le dipendenze native funzionano su Azure Linux 3.0.
- [ ] Le impostazioni di spazio di lavoro, ambiente, notebook e definizione del lavoro di Spark non utilizzano configurazioni Spark rimosse.
- [ ] I carichi di lavoro vengono testati rispetto alle impostazioni predefinite di Runtime 2.0 di Spark modificate.
- [ ] I test di regressione di Spark SQL e PySpark sono superati.
- [ ] I carichi di lavoro degli Event Hub utilizzano il connettore Kafka.
- [ ] I carichi di lavoro di Structured Streaming si riavviano e si ripristinano come progettato.
- [ ] I protocolli e le funzionalità delle tabelle Delta rimangono compatibili con tutti i client.
- [ ] Qualità dei dati, prestazioni e costi soddisfano i tuoi criteri di accettazione.
- [ ] Le procedure di rollout, monitoraggio e rollback in produzione sono documentate e testate.