หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
Fabric Runtime 2.0 เป็นรันไทม์ล่าสุดที่มีให้ใช้งานทั่วไป (GA) และเป็นรันไทม์เริ่มต้นสําหรับงาน Apache Spark ใน Microsoft Fabric มันอัปเดตระบบปฏิบัติการ Java, Scala, Python, R, Apache Spark และ Delta Lake เนื่องจากการอัปเดตหลายรายการข้ามขอบเขตของเวอร์ชันหลัก ให้ตรวจสอบสมุดบันทึก คํานิยามงาน Spark ไลบรารี และท่อข้อมูลก่อนย้ายงานผลิตจาก Runtime 1.3
คู่มือนี้อธิบายการเปลี่ยนแปลงที่อาจส่งผลต่อการย้ายข้อมูล และให้กระบวนการแบบแบ่งขั้นตอนสําหรับการย้ายงานของคุณไปยัง Runtime 2.0
สิ่งที่เปลี่ยนแปลงใน Runtime 2.0
ตารางต่อไปนี้เปรียบเทียบส่วนประกอบหลักใน Runtime 1.3 และ Runtime 2.0
| ส่วนประกอบ | รันไทม์ 1.3 | รันไทม์ 2.0 | การพิจารณาเรื่องการย้ายถิ่น |
|---|---|---|---|
| ลําดับขั้นการเผยแพร่ | ประกาศยุติการสนับสนุน (EOSA) | GA | ย้ายงานผลิตไปยังรันไทม์ GA ที่รองรับ |
| Apache Spark | 3.5.5 | 4.1.1 | ตรวจสอบการเปลี่ยนแปลงพฤติกรรมของ Spark 4.1 และลบ API ออกแล้ว |
| ทะเลสาบเดลต้า | 3.2 | 4.2 | ตรวจสอบคุณสมบัติของตารางและความเข้าได้ของโปรโตคอลในทุกงาน Fabric ที่ใช้ตารางของคุณ |
| Java | 11 | 21 | สร้างและทดสอบไลบรารี Java และ Java Native Interface (JNI) ใหม่ |
| Scala | 2.12.17 | 2.13.16 | คอมไพล์ไฟล์ Scala JAR ใหม่สําหรับ Scala 2.13 อาร์ติแฟกต์ของ Scala 2.12 และ 2.13 ไม่สามารถใช้งานร่วมกันได้แบบไบนารี |
| Python | 3.11 | 3.13 | ยืนยันว่าแต่ละแพ็กเกจ Python มีเวอร์ชันที่รองรับ Python 3.13 และวงล้อ Linux |
| R | 4.4.1 | 4.5.2 | ติดตั้งและทดสอบแพ็กเกจ R แบบกําหนดเอง SparkR ถูกยกเลิกใน Spark 4.1 |
| ระบบปฏิบัติการ | Azure Linux 2.0 (Mariner 2.0) | Azure Linux 3.0 (Mariner 3.0) | สร้างไลบรารีเนทีฟและไบนารีแบบกําหนดเองสําหรับ Azure Linux 3.0 ใหม่ |
Runtime 2.0 ยังมีความสามารถใหม่ของ Apache Spark 4.1 รวมถึงVARIANTชนิดข้อมูล ฟังก์ชันที่ผู้ใช้กําหนดเองใน SQL ตัวแปรเซสชัน ไวยากรณ์ของท่อ การจัดเรียงสตริง Python API Python Data Source ฟังก์ชันตารางที่ผู้ใช้กําหนดเอง การจัดโปรไฟล์ PySpark แบบรวมศูนย์ และ API การจัดการสถานะและดีบัก Structured Streaming ใหม่ ๆ สําหรับภาพรวม ดูที่ Runtime 2.0 ใน Fabric
ตรวจสอบการเปลี่ยนแปลงความเข้ากันได้
ตรวจสอบพื้นที่ต่อไปนี้ก่อนที่คุณจะเปลี่ยนพื้นที่ทํางานหรือสภาพแวดล้อมเป็น Runtime 2.0
ไลบรารีในตัวและแบบกําหนดเอง
Runtime 2.0 ลบแพ็กเกจ Python และ R ที่ติดตั้งไว้ล่วงหน้าหลายตัวที่มีใน Runtime 1.3 การลดชุดแพ็กเกจเริ่มต้นช่วยให้รันไทม์มีความกระชับและลดพื้นที่สําหรับเหตุการณ์ความปลอดภัยที่อาจเกิดขึ้น แพ็กเกจที่พร้อมใช้งานโดยไม่ต้องกําหนดค่าใน Runtime 1.3 อาจจําเป็นต้องถูกเพิ่มอย่างชัดเจนในสภาพแวดล้อม Runtime 2.0 ของคุณ
ใช้ Library Manager เพื่อเพิ่มเฉพาะแพ็กเกจที่งานของคุณต้องการ จากนั้นบันทึกและเผยแพร่สภาพแวดล้อม Library Manager จะจัดการกับการพึ่งพาที่จําเป็นของแพ็กเกจ ดังนั้นอย่าเพิ่มการพึ่งพาแต่ละรายการในรายการถัดไปทีละรายการ อย่าสมมติว่าไลบรารีนั้นมีให้ใช้งานหรือเวอร์ชันของมันยังคงเหมือนเดิม:
- เปรียบเทียบรายการแพ็กเกจ Runtime 1.3 และ Runtime 2.0 ในที่เก็บข้อมูล Fabric runtime release
- เพิ่มไลบรารี PyPI, Conda, Maven, R หรือไลบรารีที่กําหนดเองที่ขาดหายไปลงในสภาพแวดล้อมและเผยแพร่
- เวอร์ชันพินสําหรับงานผลิตเพื่อให้การแก้ไขการพึ่งพาสามารถทําซ้ําได้
- ยืนยันว่าแพ็กเกจ Python รองรับ Python 3.13 แพ็กเกจที่มีส่วนขยายเนทีฟต้องมีวงล้อ Linux ที่รองรับ หรือสร้างบน Azure Linux 3.0 ได้สําเร็จ
- แทนที่การพึ่งพาของ Scala 2.12 ด้วยอาร์ติแฟกต์ของ Scala 2.13 ชื่อวัตถุมักรวมถึงเวอร์ชันไบนารีของ Scala เช่น
_2.12หรือ_2.13. - คอมไพล์ไฟล์ JAR แบบกําหนดเองใหม่บน Java 21, Scala 2.13 และ Spark 4.1 ทดสอบการพึ่งพาแบบถ่ายโอนสําหรับความขัดแย้งกับไลบรารีที่จัดเตรียมโดย runtime
- สร้างไลบรารีเนทีฟแบบกําหนดเองสําหรับ Azure Linux 3.0 ใหม่
Fabric จะย้ายข้อกําหนดของไลบรารีเมื่อคุณเปลี่ยนเวลารันไทม์ของสภาพแวดล้อมที่มีอยู่ แต่ไม่สามารถรับประกันได้ว่าไลบรารีเหล่านั้นจะยังคงเข้ากันได้ การเผยแพร่ล้มเหลวเมื่อการแก้ไขการพึ่งพาพบความขัดแย้ง สําหรับตัวเลือกการติดตั้งแพ็กเกจและโหมดการเผยแพร่ ดูที่ จัดการไลบรารีในสภาพแวดล้อม Fabric
แพ็กเกจที่ถูกลบออกจากสภาพแวดล้อมเริ่มต้น
รายการต่อไปนี้ประกอบด้วยแพ็กเกจที่ผู้ใช้ใช้งานและความสัมพันธ์ระดับต่ําหรือแบบถ่ายโอน ค้นหารายการเหล่านี้เพื่อหาแพ็กเกจที่งาน Runtime 1.3 ของคุณใช้ หากมีแพ็กเกจอยู่ในรายการ ให้เพิ่มเวอร์ชันที่เข้ากันได้กับ Python 3.13 หรือ R 4.5 ผ่าน Library Manager ในสภาพแวดล้อม Runtime 2.0 ของคุณ
สภาพแวดล้อม Python: แพ็กเกจ Conda 348 แพ็กเกจ
| แพคเกจ | แพคเกจ | แพคเกจ | แพคเกจ |
|---|---|---|---|
_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
| แพคเกจ | แพคเกจ | แพคเกจ | แพคเกจ |
|---|---|---|---|
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
| แพคเกจ | แพคเกจ | แพคเกจ | แพคเกจ |
|---|---|---|---|
_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 |
หมายเหตุ
หากการป้องกันการเข้าถึงขาออกหรือเครือข่ายเสมือนที่มีการจัดการขัดขวางการเข้าถึงที่เก็บข้อมูลสาธารณะ ให้ดาวน์โหลดไฟล์ล้อที่รองรับหรือโฮสต์แพ็กเกจมิเรอร์ สําหรับคําแนะนํา ดูที่ การจัดการไลบรารีที่มีการเข้าถึงเครือข่ายจํากัดใน Fabric
การเปลี่ยนแปลงการตั้งค่าประกายไฟ
Runtime 2.0 เพิ่มและลบการตั้งค่า Spark และเปลี่ยนค่าเริ่มต้นบางส่วน Fabric ยังใช้การตั้งค่าเริ่มต้นที่แตกต่างจาก Apache Spark สําหรับบางการตั้งค่า
ก่อนที่คุณจะย้ายข้อมูล ให้ตรวจสอบการตั้งค่า Spark ที่คุณตั้งค่าไว้สําหรับพื้นที่ทํางาน สภาพแวดล้อม สมุดบันทึก และนิยามงาน Spark ของคุณ ลบการตั้งค่าที่ไม่รองรับอีกต่อไป และทดสอบงานที่พึ่งพาการเปลี่ยนแปลงค่าเริ่มต้น ใช้ค่าเริ่มต้นของรันไทม์เว้นแต่เอกสารจะสั่งให้คุณเปลี่ยนการตั้งค่า
การเปลี่ยนแปลงค่าตั้งต้นที่สําคัญ
ตารางต่อไปนี้แสดงการเปลี่ยนแปลงฐานที่เลือกไว้ ไม่ตั้งค่า หมายความว่าค่าฐานไม่ได้กําหนดค่าอย่างชัดเจน;ไม่ได้หมายความว่าฟีเจอร์นั้นถูกปิดใช้งาน
| การกำหนดค่า | ค่ารันไทม์ 1.3 | ค่ารันไทม์ 2.0 | การพิจารณาเรื่องการย้ายถิ่น |
|---|---|---|---|
spark.checkpoint.compress |
false |
true |
ไฟล์ Checkpoint จะถูกบีบอัดโดยค่าเริ่มต้น ตรวจสอบความสามารถในการทํางานร่วมกันของจุดตรวจสอบและพฤติกรรมการจัดเก็บข้อมูล |
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) |
นักเขียนปาร์เก้มุ่งเป้าไปที่บล็อกขนาดเล็ก ตรวจสอบขนาดไฟล์และประสิทธิภาพการอ่านในขั้นตอนถัดไป |
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 |
สปาร์ครอให้ภารกิจเสร็จ 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 เปิดใช้งานการเชื่อมต่อกับการแบ่งพาร์ติชันในที่เก็บข้อมูลและพฤติกรรมการแบ่งบัคเก็ต Data Source V2 อื่น ๆ โดยค่าเริ่มต้น ตรวจสอบแผนการสืบค้นและผลลัพธ์ |
spark.sql.sources.v2.bucketing.pushPartValues.enabled |
false |
true |
Spark สามารถส่งค่าพาร์ติชันที่เข้ากันได้สําหรับ Data Source V2 bucketing ตรวจสอบแผนการสืบค้นสําหรับตารางที่ถูกจัดไว้ในบัคเก็ต |
Runtime 2.0 ยังใช้ ROCKSDB แทน LEVELDB for spark.shuffle.service.db.backend และตั้งค่า spark.shuffle.service.removeShuffle เป็น true. Spark ใช้บริการสับเปลี่ยนภายนอกเพื่อลบบล็อกสับเปลี่ยนที่ไม่จําเป็นสําหรับผู้ดําเนินการที่ถูกยกเลิก
การโหลดสแนปช็อตแบบขนานแบบเดลต้า การข้ามข้อมูลแบบขนาน และการโหลดสแนปช็อตฝั่งคนขับก็เปลี่ยนไปด้วยfalsetrue ทดสอบความหน่วงของคิวรีและการใช้ทรัพยากรไดรเวอร์ โดยเฉพาะสําหรับคิวรีที่เข้าถึงหลายตาราง Delta
การแทนที่การเริ่มต้นเซสชันและการทํางานแบบเนทีฟ
การเปิดตัวฟีเจอร์ Fabric สามารถแทนที่ค่าพื้นฐานเมื่อเริ่มเซสชันได้
| การกำหนดค่า | ค่าพื้นฐานของ Runtime 2.0 | ค่าการเริ่มต้นเซสชัน Runtime 2.0 ในภูมิภาคการผลิตสาธารณะ | การพิจารณาเรื่องการย้ายถิ่น |
|---|---|---|---|
spark.gluten.sql.columnar.costBasedFallback.enabled |
false |
true |
การเปิดตัวการผลิตที่บันทึกเมื่อวันที่ 16 ตุลาคม 2026 ช่วยให้สามารถสํารองต้นทุนไปใช้ Spark ได้ ตรวจสอบแผนการสืบค้นและประสิทธิภาพอีกครั้ง รวมถึงงานที่ทดสอบก่อนการเปิดตัวนั้น |
spark.sql.parquet.native.writer.complexTypes.enabled |
false |
true |
ทดสอบการเขียนและอ่าน Downstream ของ Parquet แบบเนทีฟสําหรับอาร์เรย์ แผนที่ และสตรัคต์ |
เมื่อคุณใช้เอนจินประมวลผลแบบเนทีฟ ให้รวมการตรวจสอบต่อไปนี้ในการทดสอบถดถอยของคุณ:
- ตรวจสอบการใช้งานหน่วยความจําโดยขนาดชุดคอลัมน์เริ่มต้นเพิ่มขึ้นจาก 4,096 เป็น 10,240
- เปรียบเทียบแผนการสับเปลี่ยนและประสิทธิภาพกับเกณฑ์การสับแบบคอลัมน์ที่อิงการจัดเรียงลดลงจาก 100,000 เป็น 4,000 พาร์ติชัน
- เปรียบเทียบผลลัพธ์และประสิทธิภาพจากการแสดงออกปกติ การรองรับ regex Java แบบเนทีฟเอนจินจะเปลี่ยนจากปิดเป็นเปิดใช้งาน และการตั้งค่าที่ regex ทั้งหมดกลับไปใช้ Spark จะเปลี่ยนจาก
trueเป็นfalse.
ค่าเริ่มต้นของ Apache Spark 4.1 ถูกเก็บไว้ใน Fabric แตกต่างกัน
Fabric Runtime 2.0 ตั้งใจแทนที่ค่าเริ่มต้นของ Apache Spark 4.1 ดังต่อไปนี้ อย่าคิดว่าค่าเริ่มต้นของ Spark 4.1 ต้นทางจะใช้ได้เหมือนเดิมใน 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 แนะนําการเปลี่ยนแปลงพฤติกรรมที่อาจเปลี่ยนแปลงผลลัพธ์ของคําสั่งค้นหาหรือทําให้คําสั่งค้นหาที่เคยได้รับการยอมรับล้มเหลว ให้ความสนใจเป็นพิเศษกับพฤติกรรม SQL ของ ANSI, การแปลงข้อมูล, การดําเนินการวันที่และเวลาประทับ, ชนิดข้อมูล, การแมป JDBC และการตั้งค่า SQL ที่ถูกยกเลิกการใช้งาน
รันการทดสอบถดถอยที่เปรียบเทียบ:
- สคีมาผลลัพธ์ รวมถึงประเภท ความแม่นยํา ขนาด และ nullability
- จํานวนแถวและผลลัพธ์รวม
- พฤติกรรมการแปลงเป็นศูนย์, ล้น, หารด้วยศูนย์ และ cast ไม่ถูกต้อง
- วันที่ เวลา เขตเวลา และช่วงเวลา ผลลัพธ์
- การแมปประเภทต้นทางและซิงก์ของ JDBC
- แผนการสืบค้นและประสิทธิภาพของงานสําหรับงานสําคัญ
อย่าใช้การตั้งค่าความเข้ากันได้แบบเก่าเป็นกลยุทธ์การย้ายถาวร หากคุณใช้โปรแกรมชั่วคราวเพื่อแยกข้อผิดพลาด ให้อัปเดตโค้ดที่ได้รับผลกระทบและลบการตั้งค่าออกก่อนดําเนินการย้ายข้อมูลให้เสร็จสมบูรณ์ สําหรับชุดการเปลี่ยนแปลงพฤติกรรมทั้งหมด โปรดดูคู่มือการย้ายข้อมูล Spark SQL
API ของ Python และ pandas บน Spark
Runtime 2.0 ย้ายจาก Python 3.11 มาเป็น Python 3.13 และรวมการเปลี่ยนแปลงของ PySpark ที่เพิ่มเข้ามาใน Spark 4.1 Spark 4.1 ยังเพิ่มเวอร์ชันขั้นต่ําที่รองรับของ pandas, NumPy และ PyArrow และลบ API ที่ถูกยกเลิกในเวอร์ชันก่อนหน้า
API แพนด้าที่พบบ่อยในการอัปเดต Spark ได้แก่:
- แทนที่
DataFrame.iteritemsและSeries.iteritemsด้วยitems. - แทนที่
DataFrame.appendและSeries.appendด้วยps.concat. - แทนที่พารามิเตอร์ที่ถูกลบ
inplaceในการดําเนินการเชิงหมวดหมู่ด้วยการกําหนดค่า - ตรวจสอบชื่อพารามิเตอร์ที่เปลี่ยนแปลงและค่าเริ่มต้น เช่น
inclusiveและSeries.str.replace(regex=...) - ตรวจสอบชื่อคอลัมน์ผลลัพธ์ ชื่อดัชนี ประเภท DTYPES และลําดับ
สําหรับรายการทั้งหมด โปรดดูคู่มือการย้ายข้อมูล PySpark
แอปพลิเคชัน Java และ Scala
Scala 2.13 ไม่สามารถใช้งานร่วมกับ Scala 2.12 ได้แบบไบนารี การใช้ JAR ของ Runtime 1.3 ซ้ําใน Runtime 2.0 อาจทําให้เกิดข้อผิดพลาดในการโหลดคลาส แม้ว่าซอร์สโค้ดจะยังไม่เปลี่ยนแปลง สร้างอาร์ติแฟกต์ Runtime 2.0 แยกต่างหากและอัปเดตการพึ่งพาข้ามระบบที่สร้างใน Scala ทั้งหมด
Spark 4.1 ยังเปลี่ยนการอ้างอิง API servlet ภายในจาก javax เป็น jakarta. ตรวจสอบผู้ฟังแบบกําหนดเอง, ส่วนขยาย Spark และไลบรารีที่มีปฏิสัมพันธ์กับภายในของ Spark สําหรับการเปลี่ยนแปลงระดับเอนจินอื่น ๆ โปรดดูคู่มือการย้ายระบบ Spark Core
การสตรีมงานและตัวเชื่อมต่อ
ซอฟต์แวร์ที่ถูก EventHubConnector ยกเลิกใน Runtime 1.3 ไม่มีให้ใช้งานใน Runtime 2.0 ใช้ตัวเชื่อมต่อ Apache Spark Kafka กับปลายทางที่เข้ากันได้กับ Kafka สําหรับ Azure Event Hubs สําหรับคําแนะนําในการตั้งค่า ดูที่ Use Apache Spark with Azure Event Hubs for Apache Kafka.
สําหรับสถานการณ์ที่เกี่ยวข้อง คุณยังสามารถประเมิน Fabric eventstream เพื่อรับข้อมูลสตรีมและประมวลผลในโน้ตบุ๊กด้วย Spark Structured Streaming สําหรับข้อมูลเพิ่มเติม ดูที่ Query eventstream in Microsoft Fabric from a notebook with Spark Structured Streaming
สําหรับแต่ละภาระงาน Structured Streaming:
- ทดสอบว่าคําสั่ง Runtime 2.0 สามารถรีสตาร์ทจากสําเนาของจุดตรวจสอบที่มีอยู่ได้หรือไม่
- ตรวจสอบการดําเนินการแบบสถานะ, ลายน้ําเวลาเหตุการณ์, ทริกเกอร์, ตัวเลือกต้นทางและซัด, และสคีมาผลลัพธ์
- เก็บข้อมูลต้นทางและจุดตรวจสอบต้นฉบับไว้จนกว่าการตรวจสอบจะเสร็จสิ้น
- ถ้าจุดตรวจไม่เข้ากัน ให้วางแผนรีสตาร์ทแบบควบคุมด้วยจุดตรวจใหม่ คํานึงถึงการรีเพลย์หรือการข้ามอินพุต และตั้งค่าซิงค์ให้เป็น idempotent ก่อนเริ่มใหม่
ตรวจสอบ คู่มือการย้ายข้อมูลแบบ Structured Streaming เพื่อดูการเปลี่ยนแปลงความเข้าได้ของต้นทาง
ตารางทะเลสาบเดลต้า
Delta Lake รักษาความเข้ากันได้ย้อนหลังสําหรับตารางที่มีอยู่ ดังนั้น Runtime 2.0 จึงสามารถทํางานร่วมกับตารางที่สร้างโดย Runtime 1.3 ได้ อย่างไรก็ตาม การเปิดใช้งานฟีเจอร์ตารางใหม่อาจทําให้โปรโตคอลอ่านหรือเขียนของตารางสูงขึ้น และป้องกันไม่ให้เอนจินเก่าหรือประสบการณ์ Fabric อื่น ๆ ใช้ตารางได้
ในระหว่างการย้ายข้อมูลขณะรันไทม์ครั้งแรก:
- อย่าอัปเกรดโปรโตคอลตารางหรือเปิดใช้งานฟีเจอร์ของ Delta Lake 4.2
- ตรวจสอบฟีเจอร์และเวอร์ชันโปรโตคอลของตารางที่สร้างใหม่ รวมถึงตารางที่มีอยู่แล้ว Runtime 2.0 ตั้งค่า
spark.databricks.delta.properties.defaults.enableDeletionVectorsเป็นtrue; ตรวจสอบเมตาดาต้าของตารางที่ได้ แทนที่จะสมมติว่าการหลีกเลี่ยงการเปิดใช้งานฟีเจอร์ด้วยตนเองจะรักษาความเข้ากันได้ - ทดสอบการอ่าน เขียน รวม การพัฒนาสคีมา การบํารุงรักษา และการเข้าถึงพร้อมกัน
- ระบุเอนจินทุกตัวที่อ่านหรือเขียนแต่ละตาราง รวมถึงปลายทางวิเคราะห์ SQL, Power BI, pipeline, dataflows, eventstreams และเอนจินภายนอก
- เปิดใช้งานฟีเจอร์ Delta ใหม่ก็ต่อเมื่อผู้บริโภคทุกคนสนับสนุนแล้ว
ฟีเจอร์เฉพาะของ Delta Lake 4.2 ยังเป็นการทดลองใน Fabric และจํากัดเฉพาะประสบการณ์ของ Spark เท่านั้น สําหรับเมทริกซ์สนับสนุนและเวอร์ชันโปรโตคอลเริ่มต้น ดูที่ ความสามารถในการทํางานร่วมกันของตาราง Delta Lake
ย้ายงานของคุณ
ใช้การย้ายข้อมูลแบบแบ่งขั้นตอนแทนการเปลี่ยนเวลารันไทม์สําหรับพื้นที่ทํางานในการผลิตทันที
1. จัดทําบัญชีงาน Runtime 1.3 ของคุณ
บันทึกข้อมูลดังต่อไปนี้:
- สมุดบันทึก, คํานิยามงาน Spark, pipeline, ตารางเวลา และรายการที่ขึ้นกับกัน
- การกําหนดสภาพแวดล้อมระดับพื้นที่ทํางานและระดับรายการ
- การกําหนดค่าสปาร์ก รวมถึงการตั้งค่าความเข้ากันได้แบบเก่า
- ไลบรารีสาธารณะ ส่วนตัว และแบบกําหนดเอง รวมถึงเวอร์ชันที่แก้ไขแล้ว
- ไฟล์ JAR แบบกําหนดเอง, วงล้อ Python, แพ็กเกจ R, ไลบรารีเนทีฟ และตรรกะการเริ่มต้น
- แหล่งข้อมูล ปลายทาง ความลับ การเชื่อมต่อ และความต้องการเครือข่าย
- ตารางเดลต้าและผู้ใช้ตารางเหล่านั้นที่ไม่ใช่ Spark ทุกคน
- การสตรีมจุดตรวจสอบ, สคีมา, ออฟเซ็ต และข้อกําหนดการกู้คืน
- สคีมาผลลัพธ์ที่คาดหวัง จํานวนแถว การตรวจสอบคุณภาพข้อมูล และค่าพื้นฐานประสิทธิภาพ
จัดลําดับความสําคัญของงานที่ใช้ไลบรารีที่กําหนดเอง โค้ดเนทีฟ Scala สถานะสตรีมมิ่ง หรือฟีเจอร์ขั้นสูงของ Delta
2. สร้างสภาพแวดล้อมทดสอบ Runtime 2.0
สร้างรายการสภาพแวดล้อมแยกต่างหากและเลือก 2.0 (Spark 4.1, Delta 4.2) เป็นเวลารันไทม์ เพิ่มไลบรารีที่จําเป็น บันทึกสภาพแวดล้อม และเผยแพร่ แนบสภาพแวดล้อมกับสําเนาสมุดบันทึกตัวแทนและคํานิยามงาน Spark ในพื้นที่ทํางานพัฒนาหรือทดสอบ
หากพื้นที่ทํางานในการผลิตของคุณยังคงใช้ Runtime 1.3 อย่าเปลี่ยนเวลารันไทม์จนกว่าการทดสอบจะเสร็จสิ้น เก็บการตั้งค่าที่มีอยู่ไว้ให้พร้อมใช้งานสําหรับการย้อนกลับระหว่างการตรวจสอบ
เพื่อยืนยันการอัปเดต Runtime 2.0 ที่จะมาถึงก่อนที่จะถึงช่องทางเริ่มต้น ให้ใช้ช่องทางการปล่อยเวอร์ชัน Early Access ในสภาพแวดล้อมทดสอบของคุณ สําหรับข้อมูลเพิ่มเติม โปรดดูที่ Fabric runtime release channels
3. อัปเดตไลบรารีและโค้ด
นําการเปลี่ยนแปลงที่ระบุในการตรวจสอบความเข้ากันได้ไปใช้:
- แทนที่แพ็กเกจที่ขาดหายไปด้วยสภาพแวดล้อมที่ขึ้นกับสภาพแวดล้อมอย่างชัดเจน
- อัปเกรดหรือเปลี่ยนแพ็กเกจที่ไม่รองรับ Python 3.13, Java 21, Scala 2.13 หรือ Azure Linux 3.0
- สร้างไฟล์ JAR แบบกําหนดเองและไบนารีเนทีฟใหม่.
- อัปเดตได้ลบ API ของ PySpark และ pandas ออกเมื่อเรียก Spark
- เปลี่ยน
EventHubConnectorเป็นขั้วต่อ Kafka - ลบการตั้งค่า Spark สําหรับการกําหนดค่าที่ไม่มีใน Runtime 2.0 และตรวจสอบการแทนที่การกําหนดค่าที่ค่าเริ่มต้นถูกเปลี่ยนอย่างชัดเจน
- แก้ไขความแตกต่างของพฤติกรรม Spark SQL ในโค้ดแทนที่จะพึ่งพาการตั้งค่าเดิมอย่างถาวร
- รักษาฟีเจอร์และโปรโตคอลของตาราง Delta ที่มีอยู่ให้คงที่ในขั้นตอนนี้
4. รันการทดสอบความเข้ากันได้และการถดถอย
รันอินพุตตัวแทนเดียวกันบน Runtime 1.3 และ Runtime 2.0 เปรียบเทียบ:
- สถานะการเสร็จสิ้น บันทึก คําเตือน และการลองใหม่
- สคีมาและชนิดข้อมูล
- ผลลัพธ์ระดับแถวและผลรวม
- ประวัติและโปรโตคอลของตารางเดลต้า
- ความคืบหน้าในการสตรีม สถานะ ความหน่วง และการจัดการไฟล์ซ้ํา
- ระยะเวลาการดําเนินการ การใช้ทรัพยากร และต้นทุน
- ผลลัพธ์ที่ปลายทางจะนําไปสู่ปลายทางการวิเคราะห์ SQL, Power BI, ท่อส่งข้อมูล และผู้บริโภคอื่น ๆ
รวมการทดสอบความล้มเหลวและการกู้คืน ไม่ใช่แค่การทดสอบที่ประสบความสําเร็จเท่านั้น การรีสตาร์ทเซสชันทดสอบ, การรีไทร์งาน, การกู้คืนจุดตรวจสอบ และการเข้าถึงตารางพร้อมกัน
5. เปิดตัว Runtime 2.0
ย้ายงานในชุดงานที่ควบคุมได้:
- เผยแพร่สภาพแวดล้อม Runtime 2.0 ที่ผ่านการตรวจสอบแล้ว
- แนบกับชุดสมุดบันทึกการผลิตขนาดเล็กหรือคํานิยามงานของ Spark
- รันชุดและตรวจสอบผลลัพธ์และผู้บริโภคปลายทาง
- ดําเนินการกับงานที่เหลือหลังจากช่วงเวลาสังเกตการณ์
- ตั้งค่า Runtime 2.0 เป็นค่าเริ่มต้นของพื้นที่ทํางานหลังจากการย้ายข้อมูลระดับรายการเสร็จสิ้น
การเปลี่ยนแปลงเวลารันไทม์ของ workspace จะมีผลต่อเซสชัน Spark ใหม่ เซสชันที่มีอยู่ยังคงใช้เวลารันปัจจุบันจนกว่าจะหยุดทํางาน
6. รักษาเส้นทางการย้อนกลับ
เก็บสภาพแวดล้อม Runtime 1.3, อาร์ติแฟกต์, ข้อกําหนดไลบรารี และจุดตรวจสอบการสตรีมไว้จนกว่าช่วงเวลาการสังเกต Runtime 2.0 จะสิ้นสุดลง หากต้องการย้อนกลับ ให้แนบสภาพแวดล้อม Runtime 1.3 ใหม่หรือกู้คืน workspace runtime ก่อนหน้าและเริ่มเซสชัน Spark ใหม่
สำคัญ
การอัปเกรดโปรโตคอล Delta โดยทั่วไปไม่สามารถย้อนกลับได้ อย่าเปิดใช้งานฟีเจอร์ของตารางที่ยกระดับโปรโตคอลจนกว่าคุณจะผ่านการตรวจสอบ Runtime 2.0 และยืนยันความเข้ากันได้กับผู้ใช้ตารางทุกตัว
รายการตรวจสอบการโยกย้าย
ก่อนที่คุณจะทําการย้ายข้อมูลให้เสร็จสิ้น โปรดยืนยันว่า:
- [ ] แพ็กเกจ Python และ R ที่จําเป็นทุกตัวมีให้ใช้งานและเข้ากันได้กับ Python 3.13 หรือ R 4.5 อย่างชัดเจน
- [ ] ไฟล์ JAR แบบกําหนดเองมุ่งเป้าไปที่ Java 21, Scala 2.13 และ Spark 4.1
- [ ] Native dependencies ทํางานบน Azure Linux 3.0
- [ ] การตั้งค่าการกําหนดงานของ Workspace, Environment, สมุดบันทึก และ Spark จะไม่ใช้การกําหนดค่า Spark ที่ถูกลบออก
- [ ] งานจะถูกทดสอบกับค่าเริ่มต้นการกําหนดค่า Runtime 2.0 Spark ที่เปลี่ยนแปลง
- [ ] การทดสอบถดถอย Spark SQL และ PySpark ผ่านการทดสอบ
- [ ] เวิร์กโหลดของ Event Hubs ใช้ตัวเชื่อมต่อ Kafka
- [ ] ภาระงาน Structured Streaming จะรีสตาร์ทและกู้คืนตามที่ออกแบบไว้
- [ ] โปรโตคอลและฟีเจอร์ของตารางเดลต้ายังคงเข้ากันได้กับผู้บริโภคทุกประเภท
- [ ] คุณภาพข้อมูล ประสิทธิภาพ และผลลัพธ์ด้านต้นทุนตรงตามเกณฑ์การยอมรับของคุณ
- [ ] ขั้นตอนการเปิดตัวการผลิต การตรวจสอบ และการย้อนกลับถูกบันทึกและทดสอบ