แชร์ผ่าน


วิเคราะห์งาน Spark ด้วยไลบรารีข้อมูลเชิงลึกของงาน (พรีวิว)

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

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

Note

การเข้าถึงไลบรารีข้อมูลเชิงลึกของงานโดยใช้ PySpark ยังไม่ได้รับการสนับสนุน

ข้อกําหนดเบื้องต้น

  • รองรับเฉพาะ Scala เท่านั้น

  • ต้องใช้ Fabric Runtime 1.3 หรือใหม่กว่า (พร้อม Spark 3.5+)

  • PySpark ไม่รองรับการเข้าถึงไลบรารี Job Insight

ความสามารถหลัก

  • การวิเคราะห์งาน Spark แบบโต้ตอบ: เข้าถึงเมตริกการดําเนินการ Spark รวมถึงรายละเอียดงาน ขั้นตอน และตัวดําเนินการ

  • คงตัววัดการดําเนินการ: บันทึกเมตริกการดําเนินการงาน Spark ลงในตารางเลคเฮาส์สําหรับการรายงานและการผสานรวม

  • สําเนาบันทึกเหตุการณ์ Spark: ส่งออกบันทึกเหตุการณ์ไปยัง OneLake หรือ Azure Data Storage

สมุดบันทึกตัวอย่าง

คุณสามารถใช้สมุดบันทึกตัวอย่างที่ให้มา (ไฟล์ ipynb ตัวอย่าง) เพื่อเริ่มต้นใช้งาน สมุดบันทึกประกอบด้วย:

  • ตัวอย่าง analyze() และ loadJobInsight() รหัส
  • แสดงคําสั่ง (เช่น ) queries.show()
  • ตัวอย่างการคัดลอกบันทึกเหตุการณ์

การเริ่มต้นใช้งาน

1. วิเคราะห์งาน Spark ที่เสร็จสมบูรณ์

แยกข้อมูลการดําเนินการที่มีโครงสร้างจากงาน Spark ที่เสร็จสมบูรณ์ด้วย analyze API:

import com.microsoft.jobinsight.diagnostic.SparkDiagnostic
val jobInsight = SparkDiagnostic.analyze( 
    $workspaceId, 
    $artifactId, 
    $livyId, 
    $jobType, 
    $stateStorePath, 
     $attemptId 
) 
val queries = jobInsight.queries 
val jobs = jobInsight.jobs 
val stages = jobInsight.stages 
val tasks = jobInsight.tasks 
val executors = jobInsight.executors 

2. บันทึกเมตริกและบันทึกไปยังเลคเฮาส์

บันทึกผลลัพธ์การวิเคราะห์ไปยังตารางเลคเฮาส์สําหรับการรายงานหรือการรวม:

val df = jobInsight.queries 
df.write 
.format("delta") 
.mode("overwrite") 
.saveAsTable("sparkdiagnostic_lh.Queries") 

ใช้ตรรกะเดียวกันกับส่วนประกอบอื่นๆ เช่น งาน ขั้นตอน หรือผู้ดําเนินการ

3. โหลดการวิเคราะห์ก่อนหน้าใหม่

หากคุณได้เรียกใช้การวิเคราะห์และบันทึกผลลัพธ์แล้ว ให้โหลดซ้ําโดยไม่ต้องทําซ้ํากระบวนการ:

import com.microsoft.jobinsight.diagnostic.SparkDiagnostic 
val jobInsight = SparkDiagnostic.loadJobInsight( 
    $stateStorePath 
) 
val queries = jobInsight.queries 
val jobs = jobInsight.jobs 
val stages = jobInsight.stages 
val tasks = jobInsight.tasks 
val executors = jobInsight.executors

4. คัดลอกบันทึกเหตุการณ์ Spark

คัดลอกบันทึกเหตุการณ์ Spark ไปยังตําแหน่งที่ตั้ง ABFSS (เช่น OneLake หรือ Azure Data Lake Storage (ADLS) Gen2) ด้วย API นี้:

import com.microsoft.jobinsight.diagnostic.LogUtils 
val contentLength = LogUtils.copyEventLog( 
    $workspaceId, 
    $artifactId, 
    $livyId, 
    $jobType, 
    $targetDirectory, 
    $asyncMode, 
    $attemptId 
)

แนวทางปฏิบัติที่ดีที่สุด

ตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์อ่าน/เขียนที่ถูกต้องสําหรับเส้นทาง ABFSS ทั้งหมด

  • บันทึก analyze() เอาต์พุตไปยังตําแหน่งที่ทนทานเพื่อนํากลับมาใช้ใหม่

  • ใช้ asyncMode = true เมื่อคัดลอกบันทึกสําหรับงานขนาดใหญ่เพื่อลดเวลาแฝง

  • การตรวจสอบขนาดและโครงสร้างของบันทึกเหตุการณ์ เพื่อหลีกเลี่ยงปัญหาการแยกลําดับ

การแก้ไขปัญหา

ประเด็น วิธีการแก้ไขปัญหา
การเข้าถึงการเขียนถูกปฏิเสธ ตรวจสอบสิทธิ์การเขียนสําหรับไดเร็กทอรี ABFSS เป้าหมาย
stateStorePath มีอยู่แล้ว ใช้เส้นทางใหม่ที่ยังไม่มีอยู่สําหรับการเรียก analyze() แต่ละครั้ง