รันไทม์ของ Apache Spark ใน Fabric

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

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

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

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

  • Native Execution Engine - การปรับปรุงครั้งใหญ่สําหรับงาน Apache Spark โดยเพิ่มประสิทธิภาพอย่างมากโดยการรันคําสั่ง Spark โดยตรงบนโครงสร้างพื้นฐาน lakehouse ผสานรวมอย่างไร้รอยต่อ ไม่ต้องแก้ไขโค้ดและหลีกเลี่ยงการล็อกกับผู้ขาย รองรับทั้งรูปแบบ Parquet และ Delta บน API ของ Apache Spark ใน Runtime 1.3 (Spark 3.5) และ Runtime 2.0 (Spark 4.1)

    โอเปอเรเตอร์ที่รองรับจะถูกถ่ายโอนจาก Spark ที่ใช้ JVM ไปยังเส้นทางการดําเนินการ C++ แบบเวกเตอร์ผ่าน Apache Gluten และ Velox โดยให้การประมวลผลแบบคอลัมน์ที่เร่งด้วย SIMD พร้อมการสนับสนุนแบบเนทีฟสําหรับรูปแบบ Parquet และ Delta เมื่อตัวดําเนินการไม่ได้รับการสนับสนุน การดําเนินการจะถอยกลับไปที่ Spark ที่ใช้ JVM โดยอัตโนมัติ ในเกณฑ์มาตรฐานที่เป็นตัวแทน (TPC-DS ที่สเกลแฟกเตอร์ 1000 โดยใช้เดลต้า) เอ็นจิ้นมีประสิทธิภาพเร็วขึ้นถึงหกเท่าเมื่อเทียบกับ Spark แบบโอเพ่นซอร์ส ซึ่งแปลเป็นการประหยัดต้นทุนการประมวลผลประมาณ 83% ในคลัสเตอร์ Fabric ขนาดคงที่

    เส้นทางดั้งเดิมจะรักษาการเพิ่มประสิทธิภาพการสืบค้น Fabric Spark รวมถึงการดําเนินการคิวรีแบบปรับเปลี่ยนได้การเขียนใหม่ตามต้นทุนการตัดแต่งคอลัมน์และการกดลงเพรดิเคต คุณสามารถสลับการทํางานแบบเนทีฟของแต่ละแอปพลิเคชันได้โดยใช้ spark.native.enabled การตั้งค่า ในระหว่างการดําเนินการเซลล์สมุดบันทึก Fabric Spark Advisor จะแสดงการแจ้งเตือนแบบเรียลไทม์เมื่อการดําเนินการถอยกลับไปที่ Spark ที่ใช้ JVM ซึ่งช่วยให้คุณวินิจฉัยเมื่อไม่ได้ใช้การออฟโหลดดั้งเดิม

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

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

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

เคล็ดลับ

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

ส่วนประกอบ รันไทม์ 1.3 รันไทม์ 2.0
ขั้นตอนการเผยแพร่ GA ตัวอย่างสำหรับสาธารณะ
เวอร์ชัน Apache Spark 3.5.5 4.1
ระบบปฏิบัติการ นาวิกโยธิน 2.0 มาริเนอร์ 3.0
รุ่น Java 11 21
รุ่น Scala 2.12.17 2.13.16
เวอร์ชัน Python 3.11 3.13
เวอร์ชันเดลต้าเลค 3.2 4.2

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

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

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

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

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

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

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

Fabric รองรับรันไทม์หลายแบบ ทําให้คุณสามารถสลับใช้งานระหว่างรันไทม์และลดความเสี่ยงจากปัญหาความเข้ากันได้หรือการหยุดชะงัก

หมายเหตุ

รันไทม์ของ Spark จะรวมเวอร์ชัน Python เฉพาะไว้ในชุดคอมโพเนนต์ ตัวอย่างเช่น Runtime 1.3 รวม Python 3.11 ไว้ด้วย เวอร์ชัน Python นี้แยกจากเคอร์เนลโน้ตบุ๊ก Python ที่คุณเลือกสําหรับโน้ตบุ๊ก Python ล้วน ๆ สําหรับวงจรชีวิตเคอร์เนลของโน้ตบุ๊ก Python โปรดดูที่ Python notebook runtime และ kernel lifecycle ใน Fabric

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

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

ภาพหน้าจอแสดงตําแหน่งที่จะเลือกเวอร์ชันรันไทม์สําหรับการตั้งค่าพื้นที่ทํางาน

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

หากต้องการเปลี่ยนเวลารันไทม์ในระดับไอเท็ม Environment ให้สร้างไอเท็ม สภาพแวดล้อม ใหม่หรือเปิดไอเท็มที่มีอยู่ ภายใต้เมนูแบบเลื่อนลง Runtime ให้เลือกเวอร์ชันที่ต้องการจากตัวเลือกที่มีอยู่ เลือก และเลือกSavePublishการเปลี่ยนแปลงของคุณ ถัดไปคุณสามารถใช้รายการนี้Environmentกับ or NotebookของคุณSpark Job Definition

สกรีนช็อตแสดงตําแหน่งที่จะเลือกรุ่นรันไทม์สําหรับรายการสภาพแวดล้อม

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

ระบบจะย้ายการตั้งค่า Spark ทั้งหมด อย่างไรก็ตาม หากระบบตรวจพบว่าการตั้งค่า Spark ไม่เข้ากันกับ Runtime B ระบบจะแสดงข้อความเตือนและจะไม่ดําเนินการตั้งค่านั้น

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

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

ระบบจัดการไลบรารีจะย้ายไลบรารีทั้งหมดจาก Runtime A ไปยัง Runtime B ทั้ง runtime สาธารณะและรันไทม์ที่กําหนดเอง ถ้าเวอร์ชัน Python และ R ยังคงเหมือนเดิม ไลบรารีจะทํางานได้อย่างถูกต้อง แต่สําหรับ JAR มีโอกาสสูงที่จะไม่ทํางานเพราะการเปลี่ยนแปลงของ dependencies และปัจจัยอื่น ๆ เช่น การเปลี่ยนแปลงใน Scala, 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

สําคัญ

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเวอร์ชันและฟีเจอร์ของโปรโตคอลที่เข้ากันได้กับประสบการณ์ Fabric ทั้งหมด ดูที่ Delta Lake table format interoperability

ภาพหน้าจอแสดงคําเตือนเมื่ออัปเกรดโปรโตคอล Delta Lake

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