ย้ายจาก Fabric Runtime 1.3 ไปยัง Runtime 2.0

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. อัปเดตไลบรารีและโค้ด

นําการเปลี่ยนแปลงที่ระบุในการตรวจสอบความเข้ากันได้ไปใช้:

  1. แทนที่แพ็กเกจที่ขาดหายไปด้วยสภาพแวดล้อมที่ขึ้นกับสภาพแวดล้อมอย่างชัดเจน
  2. อัปเกรดหรือเปลี่ยนแพ็กเกจที่ไม่รองรับ Python 3.13, Java 21, Scala 2.13 หรือ Azure Linux 3.0
  3. สร้างไฟล์ JAR แบบกําหนดเองและไบนารีเนทีฟใหม่.
  4. อัปเดตได้ลบ API ของ PySpark และ pandas ออกเมื่อเรียก Spark
  5. เปลี่ยน EventHubConnector เป็นขั้วต่อ Kafka
  6. ลบการตั้งค่า Spark สําหรับการกําหนดค่าที่ไม่มีใน Runtime 2.0 และตรวจสอบการแทนที่การกําหนดค่าที่ค่าเริ่มต้นถูกเปลี่ยนอย่างชัดเจน
  7. แก้ไขความแตกต่างของพฤติกรรม Spark SQL ในโค้ดแทนที่จะพึ่งพาการตั้งค่าเดิมอย่างถาวร
  8. รักษาฟีเจอร์และโปรโตคอลของตาราง Delta ที่มีอยู่ให้คงที่ในขั้นตอนนี้

4. รันการทดสอบความเข้ากันได้และการถดถอย

รันอินพุตตัวแทนเดียวกันบน Runtime 1.3 และ Runtime 2.0 เปรียบเทียบ:

  • สถานะการเสร็จสิ้น บันทึก คําเตือน และการลองใหม่
  • สคีมาและชนิดข้อมูล
  • ผลลัพธ์ระดับแถวและผลรวม
  • ประวัติและโปรโตคอลของตารางเดลต้า
  • ความคืบหน้าในการสตรีม สถานะ ความหน่วง และการจัดการไฟล์ซ้ํา
  • ระยะเวลาการดําเนินการ การใช้ทรัพยากร และต้นทุน
  • ผลลัพธ์ที่ปลายทางจะนําไปสู่ปลายทางการวิเคราะห์ SQL, Power BI, ท่อส่งข้อมูล และผู้บริโภคอื่น ๆ

รวมการทดสอบความล้มเหลวและการกู้คืน ไม่ใช่แค่การทดสอบที่ประสบความสําเร็จเท่านั้น การรีสตาร์ทเซสชันทดสอบ, การรีไทร์งาน, การกู้คืนจุดตรวจสอบ และการเข้าถึงตารางพร้อมกัน

5. เปิดตัว Runtime 2.0

ย้ายงานในชุดงานที่ควบคุมได้:

  1. เผยแพร่สภาพแวดล้อม Runtime 2.0 ที่ผ่านการตรวจสอบแล้ว
  2. แนบกับชุดสมุดบันทึกการผลิตขนาดเล็กหรือคํานิยามงานของ Spark
  3. รันชุดและตรวจสอบผลลัพธ์และผู้บริโภคปลายทาง
  4. ดําเนินการกับงานที่เหลือหลังจากช่วงเวลาสังเกตการณ์
  5. ตั้งค่า 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 จะรีสตาร์ทและกู้คืนตามที่ออกแบบไว้
  • [ ] โปรโตคอลและฟีเจอร์ของตารางเดลต้ายังคงเข้ากันได้กับผู้บริโภคทุกประเภท
  • [ ] คุณภาพข้อมูล ประสิทธิภาพ และผลลัพธ์ด้านต้นทุนตรงตามเกณฑ์การยอมรับของคุณ
  • [ ] ขั้นตอนการเปิดตัวการผลิต การตรวจสอบ และการย้อนกลับถูกบันทึกและทดสอบ