หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
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() แต่ละครั้ง |