หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
คําสั่ง Delta Lake MERGE ช่วยให้ผู้ใช้สามารถอัปเดตตาราง Delta ด้วยเงื่อนไขขั้นสูง ซึ่งสามารถอัปเดตข้อมูลจากตารางต้นทาง มุมมอง หรือ DataFrame ลงในตารางเป้าหมายโดยใช้ MERGE คําสั่ง อย่างไรก็ตาม อัลกอริทึมปัจจุบันไม่ได้ปรับให้เหมาะสมสําหรับการจัดการแถวที่ไม่ได้เปลี่ยนแปลง ด้วยการปรับการผสานแบบสลับให้เหมาะสมต่ํา แถวที่ไม่ได้เปลี่ยนแปลงจะถูกแยกออกจากการดําเนินการสลับราคาแพงที่จําเป็นสําหรับการอัปเดตแถวที่ตรงกัน
Note
การผสานแบบสลับต่ําจะพร้อมใช้งานและเปิดใช้งานตามค่าเริ่มต้นในรันไทม์ Fabric Spark ทั้งหมดเพื่อปรับปรุงประสิทธิภาพการทํางานของการดําเนินการ MERGE อย่างมาก
ทําไมเราต้องการการผสานแบบสลับต่ํา
การดําเนินการในขณะนี้ MERGE จะดําเนินการโดยการดําเนินการรวมสองรายการ การรวมครั้งแรกคือการใช้ตารางเป้าหมายทั้งหมดและข้อมูลต้นทาง เพื่อค้นหารายการของไฟล์ ที่สัมผัส ของตารางเป้าหมายรวมถึงแถวที่ตรงกัน หลังจากนั้น การดําเนินการรวมครั้งที่สองจะอ่านเฉพาะไฟล์ ที่มีการสัมผัส เหล่านั้นและข้อมูลต้นฉบับเพื่ออัปเดตตารางจริง แม้ว่าการรวมครั้งแรกคือการลดจํานวนข้อมูลสําหรับการรวมครั้งที่สอง แต่ก็ยังอาจมีแถว ที่ยังไม่ได้เปลี่ยนแปลง ในไฟล์ แบบสัมผัส จํานวนมาก คิวรีการรวมแรกจะเบาลงเนื่องจากอ่านเฉพาะคอลัมน์ในเงื่อนไขที่ตรงกันที่ระบุ คอลัมน์ที่สองสําหรับการอัปเดตตารางจําเป็นต้องโหลดคอลัมน์ทั้งหมด ซึ่งใช้กระบวนการสลับที่มีราคาแพง
ด้วยการปรับการผสานแบบสลับให้เหมาะสมต่ํา Delta จะเก็บผลลัพธ์ของแถวที่ตรงกันจากการเข้าร่วมครั้งแรกชั่วคราวและใช้ได้สําหรับการรวมครั้งที่สอง ตามผลลัพธ์จะไม่รวมแถว ที่ไม่ได้เปลี่ยนแปลง ไปจากกระบวนการสลับหนัก จะมีงานเขียนที่แยกต่างหากสองงานสําหรับแถว ที่ตรงกัน และแถว ที่ไม่เปลี่ยนแปลง ดังนั้นจึงอาจส่งผลให้มีจํานวนไฟล์เอาต์พุต 2 เท่าเมื่อเทียบกับลักษณะการทํางานก่อนหน้านี้ อย่างไรก็ตามประสิทธิภาพที่คาดหวังจะได้รับค่าสูงเกินกว่าปัญหาไฟล์ขนาดเล็กที่เป็นไปได้
ประโยชน์ของการผสานแบบสลับต่ํา
- แถวที่ไม่ได้เปลี่ยนแปลงในไฟล์ สัมผัส จะได้รับการจัดการแยกต่างหากและไม่ผ่านการดําเนินการผสานจริง ซึ่งสามารถประหยัดเวลาการดําเนินการผสานโดยรวมและคํานวณทรัพยากรได้ การเพิ่มขึ้นจะมีขนาดใหญ่ขึ้นเมื่อมีการคัดลอกแถวจํานวนมากและมีการอัปเดตเพียงไม่กี่แถว
- การเรียงลําดับแถวจะถูกรักษาไว้สําหรับแถวที่ไม่ได้เปลี่ยนแปลง ดังนั้น ไฟล์ผลลัพธ์ของแถวที่ไม่เปลี่ยนแปลงอาจยังคงมีประสิทธิภาพสําหรับการข้ามข้อมูลหากมีการเรียงลําดับไฟล์หรือ Z-ORDERED
- จะมีค่าใช้จ่ายเล็กน้อยแม้ในกรณีที่แย่ที่สุดเมื่อเงื่อนไขการผสานตรงกับแถวทั้งหมดในไฟล์ที่สัมผัส
วิธีการเปิดใช้งานและปิดใช้งานการผสานแบบ Shuffle ต่ํา
การผสานแบบสลับต่ําจะเปิดใช้งานตามค่าเริ่มต้นเป็นการกําหนดค่าเซสชัน Spark:
SET spark.microsoft.delta.merge.lowShuffle.enabled = TRUE