Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Fabric Runtime 2.0 adalah runtime terbaru yang tersedia secara umum (GA) dan runtime default untuk beban kerja Apache Spark di Microsoft Fabric. Ini memperbarui sistem operasi, Java, Scala, Python, R, Apache Spark, dan Delta Lake. Karena beberapa pembaruan ini melewati batas versi utama, validasi notebook, definisi pekerjaan Spark, pustaka, dan pipeline data Anda sebelum memindahkan beban produksi dari Runtime 1.3.
Panduan ini menjelaskan perubahan yang dapat memengaruhi migrasi dan menyediakan proses bertahap untuk memindahkan beban kerja Anda ke Runtime 2.0.
Apa yang berubah di Runtime 2.0
Tabel berikut membandingkan komponen utama dalam Runtime 1.3 dan Runtime 2.0.
| Komponen | Runtime 1.3 | Runtime 2.0 | Pertimbangan migrasi |
|---|---|---|---|
| Tahap rilis | Pengumuman berakhirnya dukungan (EOSA) | GA | Migrasikan beban kerja produksi ke runtime GA yang didukung. |
| Apache Spark | 3.5.5 | 4.1.1 | Tinjau perubahan perilaku Spark 4.1 dan API yang dihapus. |
| Danau Delta | 3.2 | 4.2 | Validasi fitur tabel dan kompatibilitas protokol di setiap beban kerja Fabric yang menggunakan tabel Anda. |
| Java | 11 | 21 | Bangun ulang dan uji pustaka Java serta ketergantungan Java Native Interface (JNI). |
| Scala | 2.12.17 | 2.13.16 | Kompilasi ulang file JAR Scala untuk Scala 2.13. Artefak Scala 2.12 dan 2.13 tidak kompatibel secara biner. |
| Python | 3.11 | 3.13 | Pastikan setiap paket Python menyediakan rilis yang kompatibel dengan Python 3.13 dan wheel Linux. |
| R | 4.4.1 | 4.5.2 | Instal ulang dan uji paket R kustom. SparkR deprecated di Spark 4.1. |
| Sistem operasi | Azure Linux 2.0 (Mariner 2.0) | Azure Linux 3.0 (Mariner 3.0) | Bangun ulang pustaka native dan biner kustom untuk Azure Linux 3.0. |
Runtime 2.0 juga menyediakan kemampuan baru Apache Spark 4.1, termasuk tipe data VARIANT, fungsi yang didefinisikan pengguna SQL, variabel sesi, sintaks pipa, kolasi string, API Python Data Source, fungsi tabel yang didefinisikan pengguna Python, profil PySpark terpadu, dan API manajemen status serta debugging Structured Streaming yang baru. Untuk gambaran umum, lihat Runtime 2.0 di Fabric.
Tinjau perubahan kompatibilitas
Tinjau area berikut sebelum Anda mengubah workspace atau lingkungan ke Runtime 2.0.
Pustaka bawaan dan kustom
Runtime 2.0 menghilangkan beberapa paket Python dan R yang sudah terpasang sebelumnya yang tersedia di Runtime 1.3. Mengurangi set paket default menjaga runtime tetap minim dan mengurangi ruang lingkup risiko insiden keamanan. Paket yang tersedia tanpa konfigurasi di Runtime 1.3 mungkin perlu ditambahkan secara eksplisit ke lingkungan Runtime 2.0 Anda.
Gunakan Library Manager untuk menambahkan hanya paket yang diperlukan oleh beban kerja Anda, lalu simpan dan publikasikan lingkungannya. Library Manager menentukan dependensi yang diperlukan paket, jadi jangan tambahkan setiap dependensi dalam inventory berikut secara individual. Jangan menganggap bahwa sebuah pustaka tersedia atau versinya tidak berubah:
- Bandingkan inventaris paket Runtime 1.3 dan Runtime 2.0 di repositori rilis runtime Fabric.
- Tambahkan PyPI, Conda, Maven, R, atau pustaka kustom yang hilang ke lingkungan dan publikasikan.
- Sematkan versi untuk beban kerja produksi agar resolusi ketergantungan dapat diulang.
- Pastikan paket Python mendukung Python 3.13. Paket dengan ekstensi native harus menyediakan wheel Linux yang kompatibel atau berhasil dibangun di Azure Linux 3.0.
- Ganti dependensi Scala 2.12 dengan artefak Scala 2.13. Nama artefak biasanya mencakup versi biner Scala, seperti
_2.12atau_2.13. - Kompilasi ulang file JAR kustom untuk kompatibilitas dengan Java 21, Scala 2.13, dan Spark 4.1. Uji dependensi transitif untuk mendeteksi konflik dengan pustaka yang disediakan oleh runtime.
- Bangun ulang pustaka native kustom untuk Azure Linux 3.0.
Fabric memigrasikan spesifikasi pustaka ketika Anda mengubah runtime lingkungan yang sudah ada, tetapi tidak dapat menjamin bahwa pustaka tersebut tetap kompatibel. Publikasi gagal ketika resolusi ketergantungan menemukan konflik. Untuk opsi instalasi paket dan mode publikasi, lihat Kelola pustaka di lingkungan Fabric.
Paket yang dihapus dari lingkungan default
Inventaris berikut mencakup paket yang ditujukan untuk pengguna dan ketergantungan tingkat rendah atau transitifnya. Cari daftar ini untuk paket yang digunakan oleh beban kerja Runtime 1.3 Anda. Jika sebuah paket terdaftar, tambahkan versi yang kompatibel dengan Python 3.13 atau R 4.5 melalui Library Manager di lingkungan Runtime 2.0 Anda.
Lingkungan Python: paket 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 |
Lingkungan Python: paket 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 |
Lingkungan R: 67 paket 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
Jika perlindungan akses keluar atau jaringan virtual yang dikelola menghambat akses ke repositori publik, unduh file wheel yang kompatibel atau host mirror paket. Untuk petunjuk, lihat Kelola pustaka dengan akses jaringan terbatas di Fabric.
Perubahan konfigurasi Spark
Runtime 2.0 menambahkan dan menghapus pengaturan Spark serta mengubah beberapa nilai default. Fabric juga menggunakan pengaturan default berbeda dari Apache Spark untuk beberapa pengaturan.
Sebelum Anda bermigrasi, tinjau pengaturan Spark yang Anda konfigurasikan untuk workspace, lingkungan, notebook, dan definisi pekerjaan Spark Anda. Hapus pengaturan yang sudah tidak didukung, dan uji beban kerja yang bergantung pada default yang berubah. Gunakan default runtime kecuali dokumentasi mengarahkan Anda untuk mengubah pengaturan.
Perubahan nilai default yang menonjol
Tabel berikut mencantumkan perubahan baseline yang dipilih. Tidak diatur berarti baseline tidak secara eksplisit menetapkan nilai; tidak berarti fitur tersebut dinonaktifkan.
| Configuration | Nilai runtime 1.3 | Nilai runtime 2.0 | Pertimbangan migrasi |
|---|---|---|---|
spark.checkpoint.compress |
false |
true |
File checkpoint dikompresi secara bawaan. Validasi interoperabilitas checkpoint dan perilaku penyimpanan. |
spark.databricks.delta.optimizeWrite.enabled |
true |
Belum diatur | Properti tersebut tidak dihapus. Validasi perilaku penulisan teroptimasi yang efektif dengan pengaturan tabel, sesi, dan profil sumber daya Anda. |
spark.databricks.delta.optimizeWrite.partitioned.enabled |
false |
true |
Validasi throughput tulis dan ukuran file output untuk tabel Delta yang dipartisi. |
spark.hadoop.parquet.block.size |
1073741824 (1 GiB) |
134217728 (128 MiB) |
Writer Parquet menargetkan blok-blok yang lebih kecil. Validasi ukuran file dan kinerja pembacaan downstream. |
spark.microsoft.delta.optimize.fast.enabled |
false |
true |
OPTIMIZE dapat melewati pekerjaan kecuali kriteria jumlah file atau perkiraan ukuran pemadatan terpenuhi. Validasikan hasil pemeliharaan. |
spark.microsoft.delta.optimize.fileLevelTarget.enabled |
false |
true |
File yang sebelumnya mencapai setidaknya setengah dari target pemadatannya tidak akan dikompakkan lagi. Validasi tata letak file setelah OPTIMIZE. |
spark.microsoft.delta.targetFileSize.adaptive.enabled |
false |
true |
Delta menghitung ukuran file target berdasarkan ukuran tabel. Validasi ukuran file hasil dan performa baca. |
spark.speculation.multiplier |
1.5 |
3 |
Sebuah tugas harus berjalan tiga kali lebih lambat dari median sebelum Spark mempertimbangkannya untuk eksekusi spekulatif. |
spark.speculation.quantile |
0.75 |
0.9 |
Spark menunggu 90% tugas selesai sebelum mempertimbangkan eksekusi spekulatif. |
spark.sql.files.maxPartitionBytes |
134217728 (128 MiB) |
536870912 (512 MiB) |
Pemindaian file dapat mengemas lebih banyak data ke dalam setiap partisi. Validasi penggunaan paralelisme dan memori eksekutor. |
spark.sql.maxSinglePartitionBytes |
Long.MaxValue |
128m |
Satu partisi dibatasi secara default hingga 128 MiB. Validasikan kueri yang menghasilkan partisi tunggal besar. |
spark.sql.orc.compression.codec |
snappy |
zstd |
Penulisan ORC baru menggunakan kompresi Zstandard secara default. Verifikasi kompatibilitas dan kinerja dengan pembaca hilir. |
spark.sql.sources.v2.bucketing.enabled |
false |
true |
Spark secara default mengaktifkan join yang dipartisi berdasarkan penyimpanan dan perilaku bucketing Data Source V2 lainnya. Validasi rencana kueri dan hasil kueri. |
spark.sql.sources.v2.bucketing.pushPartValues.enabled |
false |
true |
Spark dapat mendorong nilai partisi yang kompatibel untuk Data Source V2 bucketing. Validasikan rencana kueri untuk tabel ber-bucket. |
Runtime 2.0 juga menggunakan ROCKSDB pengganti LEVELDB untuk spark.shuffle.service.db.backend dan mengatur spark.shuffle.service.removeShuffle ke true. Spark menggunakan layanan shuffle eksternal untuk menghapus blok shuffle yang tidak diperlukan untuk eksekutor yang alokasinya telah dilepas.
Pemuatan snapshot paralel delta, data skipping paralel, dan pemuatan snapshot di sisi driver juga berubah dari false ke true. Uji latensi kueri dan penggunaan sumber daya driver, terutama untuk kueri yang mengakses beberapa tabel Delta.
Override mulai sesi dan eksekusi native
Peluncuran fitur Fabric dapat menimpa nilai dasar saat sesi dimulai.
| Configuration | Nilai dasar Runtime 2.0 | Nilai mulai sesi runtime 2.0 di wilayah produksi publik | Pertimbangan migrasi |
|---|---|---|---|
spark.gluten.sql.columnar.costBasedFallback.enabled |
false |
true |
Peluncuran produksi yang tercatat pada 16 Oktober 2026 memungkinkan mekanisme fallback berbasis biaya ke Spark. Periksa ulang rencana dan kinerja query, termasuk beban kerja yang telah diuji sebelum penerapan tersebut. |
spark.sql.parquet.native.writer.complexTypes.enabled |
false |
true |
Uji penulisan native Parquet dan bacaan downstream untuk array, peta, dan struct. |
Saat Anda menggunakan mesin eksekusi native, sertakan pemeriksaan berikut dalam tes regresi Anda:
- Validasi penggunaan memori dengan peningkatan ukuran batch kolom default dari 4.096 menjadi 10.240.
- Bandingkan rencana shuffle dan kinerja dengan ambang columnar shuffle berbasis sort yang menurun dari 100.000 menjadi 4.000 partisi.
- Bandingkan hasil dan kinerja ekspresi reguler. Dukungan regex Java native-engine berubah dari dinonaktifkan menjadi diaktifkan, dan pengaturan yang mengembalikan semua ekspresi regex ke Spark berubah dari
truekefalse.
Default Apache Spark 4.1 dipertahankan secara berbeda di Fabric
Fabric Runtime 2.0 secara sengaja menggantikan default Apache Spark 4.1 berikut. Jangan berasumsi bahwa default Spark 4.1 upstream berlaku tidak berubah di Fabric.
| Configuration | Default Apache Spark 4.1 | Nilai 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 |
Perilaku Spark SQL dan DataFrame
Spark 4.1 memperkenalkan perubahan perilaku yang dapat mengubah hasil kueri atau menyebabkan kueri yang sebelumnya diterima gagal. Berikan perhatian khusus pada perilaku SQL ANSI, cast, operasi tanggal dan timestamp, tipe data, pemetaan JDBC, dan konfigurasi SQL yang sudah tidak digunakan.
Jalankan tes regresi yang membandingkan:
- Skema output, termasuk tipe, presisi, skala, dan nullabilitas.
- Jumlah baris dan hasil agregat.
- Perilaku null, overflow, division-by-zero, dan invalid-cast.
- Hasil tanggal, timestamp, zona waktu, dan interval.
- Pemetaan tipe sumber dan sink JDBC.
- Rencana kueri dan kinerja untuk beban kerja kritis.
Jangan gunakan pengaturan kompatibilitas lama sebagai strategi migrasi permanen. Jika Anda sementara menggunakannya untuk mengisolasi kegagalan, perbarui kode yang terdampak dan hapus pengaturannya sebelum menyelesaikan migrasi. Untuk seluruh perubahan perilaku, lihat panduan migrasi Spark SQL.
API Python dan pandas di Spark
Runtime 2.0 berpindah dari Python 3.11 ke Python 3.13 dan mencakup perubahan PySpark yang diperkenalkan di Spark 4.1. Spark 4.1 juga menaikkan versi minimum yang didukung dari pandas, NumPy, dan PyArrow serta menghapus API yang sudah tidak digunakan pada rilis sebelumnya.
Pembaruan API pandas yang umum di Spark meliputi:
- Ganti
DataFrame.iteritemsdanSeries.iteritemsdenganitems. - Ganti
DataFrame.appenddanSeries.appenddenganps.concat. - Ganti parameter yang dihapus
inplacepada operasi kategorikal dengan penugasan. - Tinjau nama parameter yang telah diubah dan default, seperti
inclusivedanSeries.str.replace(regex=...). - Validasi nama kolom hasil, nama indeks, dtype, dan urutan.
Untuk daftar lengkapnya, lihat panduan migrasi PySpark.
Aplikasi Java dan Scala
Scala 2.13 tidak kompatibel secara biner dengan Scala 2.12. Menggunakan ulang JAR Runtime 1.3 di Runtime 2.0 dapat menyebabkan kesalahan pemuatan kelas meskipun kode sumber tidak berubah. Bangun artefak Runtime 2.0 terpisah dan perbarui semua dependensi cross-built Scala.
Spark 4.1 juga mengubah referensi API servlet internalnya dari javax menjadi jakarta. Tinjau listener kustom, ekstensi Spark, dan pustaka yang berinteraksi dengan internal Spark. Untuk perubahan tingkat mesin lainnya, lihat panduan migrasi Spark Core.
Beban kerja dan konektor streaming
Fitur deprecated EventHubConnector yang termasuk dalam Runtime 1.3 tidak tersedia di Runtime 2.0. Gunakan konektor Apache Spark Kafka dengan endpoint yang kompatibel dengan Kafka untuk Azure Event Hubs. Untuk panduan pengaturan, lihat Use Apache Spark with Azure Event Hubs for Apache Kafka.
Untuk skenario yang relevan, Anda juga dapat mengevaluasi Fabric eventstream untuk mengimpor data streaming dan memprosesnya dalam notebook dengan Spark Structured Streaming. Untuk informasi lebih lanjut, lihat Query eventstream di Microsoft Fabric dari notebook dengan Spark Structured Streaming.
Untuk setiap beban kerja Structured Streaming:
- Uji apakah kueri Runtime 2.0 dapat di-restart dari salinan checkpoint yang ada.
- Validasi operasi stateful, watermark waktu peristiwa, trigger, opsi sumber dan sink, serta skema output.
- Simpan data sumber dan checkpoint asli hingga validasi selesai.
- Jika checkpoint tidak kompatibel, rencanakan restart terkontrol dengan checkpoint baru. Perhitungkan input yang diputar ulang atau dilewati, dan buat sink menjadi idempoten sebelum Anda memulai ulang.
Tinjau panduan migrasi Structured Streaming untuk perubahan kompatibilitas hulu.
Tabel Delta Lake
Delta Lake menjaga kompatibilitas mundur untuk tabel yang sudah ada, sehingga Runtime 2.0 dapat bekerja dengan tabel yang dibuat oleh Runtime 1.3. Namun, mengaktifkan fitur tabel yang lebih baru dapat meningkatkan protokol pembaca atau penulis untuk tabel tersebut dan mencegah engine lama atau pengalaman Fabric lain menggunakan tabel tersebut.
Selama migrasi runtime awal:
- Jangan upgrade protokol tabel atau aktifkan fitur Delta Lake 4.2.
- Periksa fitur dan versi protokol dari tabel yang baru dibuat serta tabel yang sudah ada. Runtime 2.0 mengatur
spark.databricks.delta.properties.defaults.enableDeletionVectorsketrue; verifikasi metadata tabel yang dihasilkan daripada mengasumsikan bahwa menghindari pengaktifan fitur secara manual menjaga kompatibilitas. - Menguji pembacaan, penulisan, penggabungan, evolusi skema, operasi pemeliharaan, dan akses bersamaan.
- Identifikasi setiap mesin yang membaca atau menulis setiap tabel, termasuk endpoint analitik SQL, Power BI, pipeline, dataflow, eventstream, dan mesin eksternal.
- Aktifkan fitur Delta baru hanya setelah semua konsumen mendukungnya.
Fitur khusus Delta Lake 4.2 bersifat eksperimental di Fabric dan terbatas pada pengalaman Spark. Untuk matriks dukungan dan versi protokol default, lihat interoperabilitas format tabel Delta Lake.
Migrasikan beban kerja Anda
Gunakan migrasi bertahap daripada segera mengubah runtime untuk workspace produksi.
1. Inventarisasi beban kerja Runtime 1.3 Anda
Catat informasi berikut:
- Notebook, definisi pekerjaan Spark, pipeline, jadwal, dan item dependen.
- Penempatan lingkungan tingkat workspace dan tingkat item.
- Konfigurasi Spark, termasuk pengaturan kompatibilitas lama.
- Pustaka publik, privat, dan khusus beserta versi hasil resolusi.
- File JAR kustom, wheel Python, paket R, pustaka native, dan logika inisialisasi.
- Sumber data, tujuan, secret, koneksi, dan kebutuhan jaringan.
- Tabel Delta dan semua konsumen non-Spark dari tabel tersebut.
- Checkpoint streaming, skema, offset, dan persyaratan pemulihan.
- Skema output yang diharapkan, jumlah baris, pemeriksaan kualitas data, dan baseline kinerja.
Prioritaskan beban kerja yang menggunakan pustaka kustom, kode asli, Scala, state streaming, atau fitur Delta lanjutan.
2. Buat lingkungan pengujian Runtime 2.0
Buat item lingkungan terpisah dan pilih 2.0 (Spark 4.1, Delta 4.2) sebagai runtime-nya. Tambahkan pustaka yang diperlukan, simpan environment, dan publikasikan. Lampirkan environment ke salinan notebook representatif dan definisi pekerjaan Spark di workspace pengembangan atau pengujian.
Jika workspace produksi Anda masih menggunakan Runtime 1.3, jangan ubah runtime-nya sampai pengujian selesai. Pertahankan konfigurasi yang ada agar tersedia untuk rollback selama validasi.
Untuk memvalidasi pembaruan Runtime 2.0 yang akan datang sebelum mencapai saluran default, gunakan saluran rilis early access di lingkungan pengujian Anda. Untuk informasi lebih lanjut, lihat saluran rilis runtime Fabric.
3. Perbarui pustaka dan kode
Terapkan perubahan yang diidentifikasi dalam tinjauan kompatibilitas:
- Ganti paket bawaan yang tidak ada dengan dependensi lingkungan yang eksplisit.
- Tingkatkan atau ganti paket yang tidak mendukung Python 3.13, Java 21, Scala 2.13, atau Azure Linux 3.0.
- Bangun ulang file JAR kustom dan biner native.
- Pembaruan: menghapus panggilan ke API PySpark dan pandas pada Spark.
- Ganti
EventHubConnectordengan konektor Kafka. - Hapus pengaturan Spark untuk konfigurasi yang tidak tersedia di Runtime 2.0, dan tinjau override eksplisit dari konfigurasi yang default-nya berubah.
- Selesaikan perbedaan perilaku Spark SQL dalam kode daripada bergantung secara permanen pada pengaturan lama.
- Jaga fitur dan protokol tabel Delta yang ada tetap tidak berubah selama fase ini.
4. Jalankan tes kompatibilitas dan regresi
Jalankan input representatif yang sama pada Runtime 1.3 dan Runtime 2.0. Membandingkan:
- Status penyelesaian, log, peringatan, dan percobaan ulang.
- Skema dan tipe data.
- Hasil tingkat baris dan agregat.
- Riwayat dan protokol tabel Delta.
- Kemajuan streaming, status, latensi, dan penanganan duplikat.
- Waktu eksekusi, penggunaan sumber daya, dan biaya.
- Hasil hilir tersedia di endpoint analitik SQL, Power BI, pipeline, dan konsumen lainnya.
Sertakan uji kegagalan dan pemulihan, bukan hanya pengujian yang berhasil. Sesi uji dimulai ulang, percobaan ulang pekerjaan, pemulihan checkpoint, dan akses tabel secara bersamaan.
5. Luncurkan Runtime 2.0
Pindahkan beban kerja dalam batch terkontrol:
- Publikasikan lingkungan Runtime 2.0 yang telah divalidasi.
- Lampirkan itu ke set kecil notebook produksi atau definisi job Spark.
- Jalankan batch dan pantau output serta konsumen downstream.
- Lanjutkan dengan sisa beban kerja setelah periode observasi.
- Atur Runtime 2.0 sebagai default workspace hanya setelah migrasi tingkat item selesai.
Mengubah runtime workspace memengaruhi sesi Spark baru. Sesi yang ada akan terus menggunakan runtime masing-masing saat ini sampai berhenti.
6. Siapkan jalur rollback
Pertahankan lingkungan Runtime 1.3, artefak, spesifikasi pustaka, dan checkpoint streaming hingga periode observasi Runtime 2.0 berakhir. Untuk melakukan rollback, pasang kembali lingkungan Runtime 1.3 atau pulihkan runtime workspace sebelumnya dan mulai sesi Spark baru.
Important
Upgrade protokol Delta umumnya tidak dapat dibalik. Jangan aktifkan fitur tabel yang menaikkan protokol sampai Anda menyelesaikan validasi Runtime 2.0 dan mengonfirmasi kompatibilitas dengan setiap pengguna tabel.
Daftar periksa migrasi
Sebelum Anda menyelesaikan migrasi, pastikan bahwa:
- [ ] Setiap paket Python dan R yang diperlukan secara eksplisit tersedia dan kompatibel dengan Python 3.13 atau R 4.5.
- [ ] File JAR kustom menargetkan Java 21, Scala 2.13, dan Spark 4.1.
- [ ] Dependensi native bekerja di Azure Linux 3.0.
- [ ] Pengaturan definisi pekerjaan workspace, lingkungan, notebook, dan Spark tidak menggunakan konfigurasi Spark yang telah dihapus.
- [ ] Beban kerja diuji terhadap konfigurasi default Runtime 2.0 Spark yang telah diubah.
- [ ] Tes regresi Spark SQL dan PySpark lulus.
- [ ] Beban kerja Event Hubs menggunakan konektor Kafka.
- [ ] Beban kerja Structured Streaming dimulai ulang dan dipulihkan sesuai desain.
- [ ] Protokol dan fitur tabel Delta tetap kompatibel dengan semua konsumen.
- [ ] Hasil kualitas data, kinerja, dan biaya memenuhi kriteria penerimaan Anda.
- [ ] Prosedur peluncuran produksi, pemantauan, dan rollback didokumentasikan dan diuji.