แชร์ผ่าน


รันไทม์ Apache Spark ใน Fabric

Microsoft Fabric Runtime เป็นแพลตฟอร์มที่รวมเข้ากับ Azure โดยอ้างอิงจาก Apache Spark ที่ช่วยให้สามารถดําเนินการและจัดการประสบการณ์ด้านวิศวกรรมข้อมูลและวิทยาศาสตร์ข้อมูลได้ โดยจะรวมคอมโพเนนต์หลักจากแหล่งข้อมูลภายในและโอเพนซอร์สซึ่งให้บริการลูกค้าด้วยโซลูชันที่ครอบคลุม เพื่อความง่าย เราอ้างอิงถึง Microsoft Fabric Runtime ที่ขับเคลื่อนโดย Apache Spark เป็น Fabric Runtime

ส่วนประกอบหลักของรันไทม์ Fabric:

  • Apache Spark - ไลบรารีการประมวลผลแบบกระจายโอเพนซอร์สที่มีประสิทธิภาพซึ่งช่วยให้การประมวลผลข้อมูลและการวิเคราะห์งานขนาดใหญ่ได้ Apache Spark มอบแพลตฟอร์มที่หลากหลายและมีประสิทธิภาพสูงสําหรับประสบการณ์ด้านวิศวกรรมข้อมูลและวิทยาศาสตร์ข้อมูล

  • Delta Lake - เลเยอร์การจัดเก็บโอเพนซอร์สที่นําการทําธุรกรรม ACID และคุณสมบัติความน่าเชื่อถือของข้อมูลอื่น ๆ ไปยัง Apache Spark Delta Lake ช่วยเพิ่มความสามารถในการประมวลผลข้อมูลและรับประกันความสอดคล้องของข้อมูลในการดําเนินการที่เกิดขึ้นพร้อมกันหลายรายการภายใน Fabric Runtime

  • กลไก การดําเนินการแบบเนทีฟ - คือการปรับปรุงเปลี่ยนแปลงสําหรับปริมาณงาน Apache Spark ซึ่งนําเสนอประสิทธิภาพที่สําคัญโดยการดําเนินการคิวรี Spark โดยตรงบนโครงสร้างพื้นฐานของเลคเฮ้าส์ การรวมเข้าด้วยกันอย่างราบรื่น ไม่จําเป็นต้องมีการเปลี่ยนแปลงรหัสและหลีกเลี่ยงการล็อกผู้จัดจําหน่ายซึ่งสนับสนุนทั้งรูปแบบ Parquet และ Delta ทั่วทั้ง Apache Spark API ใน Runtime 1.3 (Spark 3.5) กลไกนี้เพิ่มความเร็วในการคิวรี่ได้เร็วขึ้นกว่า OSS Spark แบบเดิมถึงสี่เท่า ดังที่แสดงในเกณฑ์มาตรฐาน TPC-DS 1TB ลดค่าใช้จ่ายในการดําเนินงานและปรับปรุงประสิทธิภาพในงานข้อมูลต่าง ๆ รวมถึงการนําเข้าข้อมูล ETL การวิเคราะห์ และคิวรีแบบโต้ตอบ สร้างขึ้นบน Velox ของ Meta และ Apache Gluten ของ Intel ซึ่งปรับการใช้ทรัพยากรให้เหมาะสมในขณะจัดการสถานการณ์การประมวลผลข้อมูลที่หลากหลาย

  • แพคเกจระดับเริ่มต้นสําหรับ Java/Scala, Python และ R - แพคเกจที่สนับสนุนภาษาและสภาพแวดล้อมการเขียนโปรแกรมที่หลากหลาย แพคเกจเหล่านี้จะถูกติดตั้งและกําหนดค่าโดยอัตโนมัติ ซึ่งช่วยให้นักพัฒนาสามารถใช้ภาษาการเขียนโปรแกรมที่ต้องการสําหรับงานการประมวลผลข้อมูล

  • Microsoft Fabric Runtime ถูกสร้างขึ้นจาก ระบบปฏิบัติการโอเพนซอร์สที่แข็งแกร่ง เพื่อให้มั่นใจถึงความเข้ากันได้กับการกําหนดค่าฮาร์ดแวร์และความต้องการของระบบต่าง ๆ

ด้านล่าง นี้ คุณจะพบการเปรียบเทียบที่ครอบคลุมของคอมโพเนนต์ที่สําคัญ รวมถึงเวอร์ชันของ Apache Spark ระบบปฏิบัติการที่รองรับ Java, Scala, Python, Delta Lake และ R สําหรับรันไทม์ที่ใช้ Apache Spark ภายในแพลตฟอร์ม Microsoft Fabric

เคล็ดลับ

ใช้เวอร์ชันรันไทม์ GA ล่าสุดเสมอสําหรับปริมาณงานการผลิตของคุณ ซึ่งปัจจุบันคือ Runtime 1.3

รันไทม์ 1.1 รันไทม์ 1.2 รันไทม์ 1.3
Apache Spark 3.3.1 3.4.1 3.5.0
ระบบปฏิบัติการ Ubuntu 18.04 นาวิกโยธิน 2.0 นาวิกโยธิน 2.0
ชวา 8 11 11
สเกลา 2.12.15 2.12.17 2.12.17
Python 3.10 3.10 3.11
ทะเลสาบเดลตา 2.2.0 2.4.0 3.2
R 4.2.2 4.2.2 4.4.1

เยี่ยมชม Runtime 1.1, Runtime 1.2 หรือ Runtime 1.3 เพื่อสํารวจรายละเอียด คุณลักษณะใหม่ การปรับปรุง และสถานการณ์การโยกย้ายสําหรับเวอร์ชันรันไทม์เฉพาะ

การปรับเนื้อผ้าให้เหมาะสม

ใน Microsoft Fabric ทั้งกลไก Spark และการใช้งาน Delta Lake จะรวมการเพิ่มประสิทธิภาพและคุณลักษณะเฉพาะของแพลตฟอร์ม คุณลักษณะเหล่านี้ได้รับการออกแบบมาเพื่อใช้การผสานรวมแบบเนทีฟภายในแพลตฟอร์ม สิ่งสําคัญคือต้องทราบว่าคุณสมบัติทั้งหมดเหล่านี้สามารถปิดใช้งานเพื่อให้ได้ฟังก์ชัน Spark และ Delta Lake มาตรฐาน ผ้ารันไทม์สําหรับ Apache Spark ครอบคลุม:

  • Apache Spark เวอร์ชันโอเพนซอร์สที่สมบูรณ์
  • คอลเลกชันของการปรับปรุงประสิทธิภาพคิวรีที่มีอยู่ภายในเกือบ 100 รายการ การเพิ่มประสิทธิภาพเหล่านี้รวมถึงคุณลักษณะเช่นการแคชพาร์ติชัน (การเปิดใช้งานแคชพาร์ติชัน FileSystem เพื่อลดการเรียกใช้เมตาสโตร์) และ Cross Join กับ Projection ของคิวรีย่อยสเกลาร์
  • แคชอัจฉริยะในตัว

ภายใน Fabric Runtime สําหรับ Apache Spark และ Delta Lake มีความสามารถของนักเขียนแบบดั้งเดิมที่รองรับสองวัตถุประสงค์หลักได้แก่:

  1. ซึ่งมีประสิทธิภาพที่แตกต่างกันสําหรับการเขียนปริมาณงานปรับกระบวนการเขียนให้เหมาะสม
  2. ค่าเริ่มต้นเป็นการปรับ V-Order ให้เหมาะสมของไฟล์ Delta Parquet การปรับ Delta Lake V-Order ให้เหมาะสมเป็นสิ่งสําคัญสําหรับการส่งมอบประสิทธิภาพการอ่านที่เหนือชั้นกว่าในเครื่องมือ Fabric ทั้งหมด เพื่อให้เข้าใจลึกขึ้นเกี่ยวกับวิธีการทํางานและวิธีการจัดการ โปรดดูบทความเฉพาะเกี่ยวกับ การปรับตาราง Delta Lake และ V-Order ให้เหมาะสม

การสนับสนุนรันไทม์หลายรายการ

ผ้ารองรับการทํางานหลายอย่าง ทําให้ผู้ใช้มีความยืดหยุ่นในการเปลี่ยนไปมาระหว่างกันได้อย่างราบรื่น ลดความเสี่ยงของความไม่สามารถใช้งานหรือการหยุดชะงัก

ตามค่าเริ่มต้น พื้นที่ทํางานใหม่ทั้งหมดจะใช้เวอร์ชันรันไทม์ล่าสุด ซึ่งขณะนี้กําลังรันไทม์ 1.3

หากต้องการเปลี่ยนเวอร์ชันรันไทม์ในระดับพื้นที่ทํางาน ให้ไปที่การตั้งค่า>พื้นที่ทํางานวิศวกรข้อมูล/ วิทยาศาสตร์ > Spark Compute > Workspace Default และเลือกรันไทม์ที่คุณต้องการจากตัวเลือกที่พร้อมใช้งาน

เมื่อคุณทําการเปลี่ยนแปลงนี้ รายการทั้งหมดที่ระบบสร้างขึ้นภายในพื้นที่ทํางาน รวมถึง Lakehouses, SJDs และ Notebooks จะทํางานโดยใช้เวอร์ชันรันไทม์ระดับพื้นที่ทํางานที่เลือกใหม่ โดยเริ่มต้นจากเซสชัน Spark ถัดไป ถ้าคุณกําลังใช้สมุดบันทึกที่มีเซสชันที่มีอยู่สําหรับงานหรือกิจกรรมที่เกี่ยวข้องกับเลคเฮ้าส์ใด ๆ เซสชัน Spark นั้นจะดําเนินต่อไป อย่างไรก็ตาม โดยเริ่มต้นจากเซสชันหรืองานถัดไป จะมีการใช้เวอร์ชันรันไทม์ที่เลือก

Gif แสดงวิธีการเปลี่ยนเวอร์ชันรันไทม์

ผลของการเปลี่ยนแปลงรันไทม์ในการตั้งค่า Spark

โดยทั่วไป เราตั้งใจที่จะโยกย้ายการตั้งค่า Spark ทั้งหมด อย่างไรก็ตาม ถ้าเราระบุว่าการตั้งค่า Spark ไม่เข้ากันกับ Runtime B เราจะออกข้อความเตือนและงดใช้การตั้งค่า

การเปลี่ยนแปลงเวลาการใช้งานของการตั้งค่า Spark

ผลของการเปลี่ยนแปลงรันไทม์ในการจัดการไลบรารี

โดยทั่วไป วิธีการของเราคือการโยกย้ายไลบรารีทั้งหมดจากรันไทม์ A ไปยังรันไทม์ B รวมถึงรันไทม์สาธารณะและแบบกําหนดเอง หากเวอร์ชัน Python และ R ยังคงไม่เปลี่ยนแปลง ไลบรารีควรทํางานได้อย่างถูกต้อง อย่างไรก็ตามสําหรับ Jars มีความเป็นไปได้อย่างมากที่พวกเขาอาจไม่ทํางานเนื่องจากการเปลี่ยนแปลงในการขึ้นต่อกันและปัจจัยอื่น ๆ เช่น การเปลี่ยนแปลงในสเกลา Java Spark และระบบปฏิบัติการ

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

การเปลี่ยนแปลงรันไทม์การจัดการไลบรารี

อัปเกรดโปรโตคอล Delta Lake

ฟีเจอร์ของ Delta Lake สามารถทํางานย้อนหลังได้เสมอ ทําให้มั่นใจได้ว่าตารางที่สร้างขึ้นใน Delta Lake รุ่นที่ต่ํากว่าสามารถโต้ตอบกับเวอร์ชันที่สูงกว่าได้อย่างราบรื่น อย่างไรก็ตามเมื่อมีการเปิดใช้งานคุณลักษณะบางอย่าง (ตัวอย่างเช่น โดยใช้ delta.upgradeTableProtocol(minReaderVersion, minWriterVersion) เมธอด ความเข้ากันได้ไปข้างหน้ากับ Delta Lake รุ่นที่ต่ํากว่าอาจได้รับผลกระทบ ในกรณีดังกล่าว คุณจําเป็นต้องปรับเปลี่ยนปริมาณงานที่อ้างอิงตารางที่อัปเกรดเพื่อให้สอดคล้องกับเวอร์ชัน Delta Lake ที่รักษาความเข้ากันได้

ตาราง Delta แต่ละตารางเกี่ยวข้องกับข้อกําหนดของโพรโทคอล โดยกําหนดคุณลักษณะที่สนับสนุน แอปพลิเคชันที่โต้ตอบกับตารางทั้งสําหรับการอ่านหรือการเขียนขึ้นอยู่กับข้อกําหนดของโปรโตคอลนี้เพื่อตรวจสอบว่าสามารถเข้ากันได้กับชุดคุณลักษณะของตารางหรือไม่ หากแอปพลิเคชันไม่มีความสามารถในการจัดการคุณสมบัติที่ระบุไว้ตามที่ได้รับการสนับสนุนในโปรโตคอลของตาราง จะไม่สามารถอ่านหรือเขียนไปยังตารางนั้นได้

ข้อกําหนดโปรโตคอลแบ่งออกเป็นสององค์ประกอบที่แตกต่างกัน: โปรโตคอลการอ่านและโปรโตคอลการเขียน ไปที่หน้า "Delta Lake จัดการความเข้ากันได้ของคุณลักษณะอย่างไร" เพื่ออ่านรายละเอียดเกี่ยวกับเรื่องนี้

GIF แสดงคําเตือนทันทีเมื่อมีการใช้วิธีการ upgradeTableProtocol

ผู้ใช้สามารถดําเนินการคําสั่ง delta.upgradeTableProtocol(minReaderVersion, minWriterVersion) ภายในสภาพแวดล้อม PySpark และใน Spark SQL และ Scala ได้ คําสั่งนี้ช่วยให้พวกเขาเริ่มต้นการอัปเดตบนตาราง Delta

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

การอัปเกรดเวอร์ชันโปรโตคอลอาจส่งผลกระทบต่อความเข้ากันได้ของโปรแกรมอ่านตาราง Delta Lake ที่มีอยู่ ผู้เขียน หรือทั้งสองอย่าง ดังนั้นจึงแนะนําให้ดําเนินการด้วยความระมัดระวังและอัปเกรดเวอร์ชันโปรโตคอลเฉพาะเมื่อจําเป็นเช่นเมื่อมีการใช้คุณสมบัติใหม่ใน Delta Lake

สกรีนช็อตแสดงคําเตือนเมื่ออัปเกรดโพรโทคอล delta lake

นอกจากนี้ ผู้ใช้ควรตรวจสอบว่าปริมาณงานและกระบวนการการผลิตในปัจจุบันและในอนาคตทั้งหมดสามารถเข้ากันได้กับตาราง Delta Lake โดยใช้เวอร์ชั่นโปรโตคอลใหม่เพื่อให้มั่นใจว่าการเปลี่ยนแปลงที่ราบรื่นและป้องกันการหยุดชะงักที่อาจเกิดขึ้น

การเปลี่ยนแปลง Delta 2.2 เทียบกับ Delta 2.4

ในเวอร์ชันล่าสุดของ Fabric Runtime เวอร์ชัน 1.3 และ Fabric Runtime เวอร์ชัน 1.2 รูปแบบตารางเริ่มต้น (spark.sql.sources.default) คือตอนนี้delta ใน Fabric Runtime เวอร์ชัน 1.1 และรันไทม์ Synapse ทั้งหมดสําหรับ Apache Spark ที่มี Spark 3.3 หรือต่ํากว่า รูปแบบตารางเริ่มต้นถูกกําหนดเป็นparquet ตรวจสอบ ตารางที่มีรายละเอียด การกําหนดค่า Apache Spark สําหรับความแตกต่างระหว่าง Azure Synapse Analytics และ Microsoft Fabric

ตารางทั้งหมดที่สร้างขึ้นโดยใช้ Spark SQL, PySpark, Scala Spark และ Spark R เมื่อใดก็ตามที่ชนิดตารางถูกเว้นไว้ จะสร้างตารางเป็นค่าเริ่มต้นdelta หากสคริปต์กําหนดรูปแบบตารางอย่างชัดเจน ก็จะเป็นไปตามสคริปต์ดังกล่าว คําสั่ง USING DELTA ใน Spark สร้างคําสั่งตารางจะกลายเป็นรายการซ้ําซ้อน

สคริปต์ที่คาดหวังหรือสมมติว่ารูปแบบตาราง parquet ควรได้รับการแก้ไข คําสั่งต่อไปนี้ไม่ได้รับการสนับสนุนในตาราง Delta:

  • ANALYZE TABLE $partitionedTableName PARTITION (p1) COMPUTE STATISTICS
  • ALTER TABLE $partitionedTableName ADD PARTITION (p1=3)
  • ALTER TABLE DROP PARTITION
  • ALTER TABLE RECOVER PARTITIONS
  • ALTER TABLE SET SERDEPROPERTIES
  • LOAD DATA
  • INSERT OVERWRITE DIRECTORY
  • SHOW CREATE TABLE
  • CREATE TABLE LIKE