หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
Spark job definition (SJD) เป็นประเภทของไอเท็ม Fabric ที่ช่วยให้ผู้ใช้สามารถกําหนดและรันงาน Apache Spark ใน Fabric ได้ Spark job definition API v2 อนุญาตให้ผู้ใช้สร้างและอัปเดตรายการกําหนดงาน Spark ด้วยรูปแบบใหม่ที่เรียกว่า SparkJobDefinitionV2. ประโยชน์หลักของการใช้รูปแบบ v2 คือช่วยให้ผู้ใช้สามารถจัดการไฟล์ปฏิบัติการหลักและไฟล์ไลบรารีอื่น ๆ ได้ด้วยการเรียก API เพียงครั้งเดียวแทนที่จะใช้ API ที่เก็บข้อมูลเพื่ออัปโหลดไฟล์แยกต่างหากไม่จําเป็นต้องใช้โทเค็นที่เก็บข้อมูลอีกต่อไปสําหรับการจัดการไฟล์
ข้อกําหนดเบื้องต้น
- จําเป็นต้องใช้โทเค็น Microsoft Entra เพื่อเข้าถึง Fabric REST API แนะนําให้ใช้ไลบรารี MSAL (Microsoft Authentication Library) เพื่อรับโทเค็น สําหรับข้อมูลเพิ่มเติม โปรดดู การสนับสนุนโฟลว์การรับรองความถูกต้องใน MSAL
Fabric REST API กําหนดจุดสิ้นสุดที่เป็นหนึ่งเดียวสําหรับการดําเนินงาน CRUD ของรายการ Fabric ปลายทางคือhttps://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items
ภาพรวมรูปแบบการกําหนดงาน Spark v2
ในภาระงานของการจัดการรายการกําหนดงาน Spark ฟิลด์นี้ definition ถูกใช้เพื่อระบุการตั้งค่ารายละเอียดของรายการกําหนดงาน Spark ฟิลด์ประกอบด้วยdefinitionฟิลด์ย่อยสองฟิลด์: format และparts ฟิลด์นี้ format ระบุรูปแบบของรายการนิยามงาน Spark ซึ่งควรเป็น SparkJobDefinitionV2 สําหรับรูปแบบ v2
ฟิลด์นี้เป็น parts อาร์เรย์ที่มีการตั้งค่ารายละเอียดของรายการกําหนดงาน Spark แต่ละรายการใน parts อาร์เรย์แสดงถึงส่วนหนึ่งของการตั้งค่าโดยละเอียด แต่ละส่วนประกอบด้วยเขตข้อมูลย่อยสามช่อง: path, , payloadและpayloadType
pathฟิลด์ระบุเส้นทางของชิ้นส่วนpayloadฟิลด์ระบุเนื้อหาของชิ้นส่วนที่เข้ารหัส base64 และpayloadTypeฟิลด์ระบุชนิดของเพย์โหลดซึ่งควรเป็นInlineBase64
สําคัญ
รูปแบบ v2 นี้รองรับการกําหนดงาน Spark เฉพาะกับไฟล์รูปแบบ .py หรือ .scala เท่านั้น ไม่รองรับรูปแบบไฟล์ .jar
สร้างรายการนิยามงาน Spark ด้วยไฟล์นิยามหลักและไฟล์ลิบอื่น ๆ
ในตัวอย่างต่อไปนี้ เราจะสร้างรายการนิยามงาน Spark ซึ่ง:
- ชื่อคือ
SJDHelloWorld. - ไฟล์คํานิยามหลักคือ
main.py, ซึ่งใช้อ่านไฟล์ CSV จากบ้านพักทะเลสาบเริ่มต้นและบันทึกเป็นตารางเดลต้ากลับไปยังบ้านพักน้ําเดียวกัน - ไฟล์ LIB อื่น ๆ คือ
libs.pyซึ่งมีฟังก์ชันยูทิลิตี้เพื่อส่งคืนชื่อของไฟล์ CSV และตารางเดลต้า - บ้านพักทะเลสาบเริ่มต้นถูกตั้งค่าเป็นรหัสไอเท็มบ้านพักทะเลสาบเฉพาะ
ต่อไปนี้คือรายละเอียดของเพย์โหลดสําหรับการสร้างรายการกําหนดงาน Spark
{
"displayName": "SJDHelloWorld",
"type": "SparkJobDefinition",
"definition": {
"format": "SparkJobDefinitionV2",
"parts": [
{
"path": "SparkJobDefinitionV1.json",
"payload": "<REDACTED>",
"payloadType": "InlineBase64"
},
{
"path": "Main/main.py",
"payload": "<REDACTED>",
"payloadType": "InlineBase64"
},
{
"path": "Libs/lib1.py",
"payload": "<REDACTED>",
"payloadType": "InlineBase64"
}
]
}
}
ในการถอดรหัสหรือเข้ารหัสการตั้งค่าโดยละเอียด คุณสามารถใช้ฟังก์ชันตัวช่วยต่อไปนี้ใน Python นอกจากนี้ยังมีเครื่องมือออนไลน์อื่น ๆ เช่น https://www.base64decode.org/ ที่สามารถทํางานเดียวกันได้
import base64
def json_to_base64(json_data):
# Serialize the JSON data to a string
json_string = json.dumps(json_data)
# Encode the JSON string as bytes
json_bytes = json_string.encode('utf-8')
# Encode the bytes as Base64
base64_encoded = base64.b64encode(json_bytes).decode('utf-8')
return base64_encoded
def base64_to_json(base64_data):
# Decode the Base64-encoded string to bytes
base64_bytes = base64_data.encode('utf-8')
# Decode the bytes to a JSON string
json_string = base64.b64decode(base64_bytes).decode('utf-8')
# Deserialize the JSON string to a Python dictionary
json_data = json.loads(json_string)
return json_data
การตอบกลับรหัส HTTP 202 แสดงว่ารายการกําหนดงาน Spark ถูกสร้างสําเร็จแล้ว
รับการกําหนดงาน Spark พร้อมชิ้นส่วนกําหนดภายใต้รูปแบบ v2
ด้วยรูปแบบ v2 ใหม่ เมื่อได้รับรายการกําหนดงาน Spark ที่มีส่วนกําหนด เนื้อหาไฟล์ของไฟล์กําหนดหลักและไฟล์ลิบอื่น ๆ จะถูกรวมอยู่ใน payload ตอบกลับ base64 ที่เข้ารหัสไว้ใต้ parts ฟิลด์ นี่คือตัวอย่างการได้ไอเท็มนิยามงาน Spark พร้อมชิ้นส่วนนิยาม:
- ขั้นแรก ให้ส่งคําขอ POST ไปยังปลายทาง
https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items/{sjditemid}/getDefinitionParts?format=SparkJobDefinitionV2. ตรวจสอบให้แน่ใจว่าค่าของพารามิเตอร์คิวรีรูปแบบเป็นSparkJobDefinitionV2 - จากนั้นในส่วนหัวของการตอบกลับ ให้ตรวจสอบรหัสสถานะ HTTP รหัส HTTP 202 แสดงว่าคําขอได้รับการยอมรับเรียบร้อยแล้ว คัดลอก
x-ms-operation-idค่าจากส่วนหัวของการตอบกลับ - สุดท้าย ให้ส่งคําขอ GET ไปยังปลายทาง
https://api.fabric.microsoft.com/v1/operations/{operationId}ด้วยค่าที่x-ms-operation-idคัดลอกเพื่อรับผลการดําเนินการ ในข้อมูลตอบกลับ ฟิลด์นี้จะdefinitionมีการตั้งค่ารายละเอียดของรายการนิยามงาน Spark รวมถึงไฟล์นิยามหลักและไฟล์ลิบอื่น ๆ ภายใต้partsฟิลด์นั้น
อัปเดตรายการนิยามงาน Spark ด้วยไฟล์นิยามหลักและไฟล์ลิบอื่น ๆ ภายใต้รูปแบบ v2
หากต้องการอัปเดตรายการนิยามงาน Spark ที่มีอยู่ด้วยไฟล์นิยามหลักและไฟล์ลิบอื่น ๆ ภายใต้รูปแบบ v2 คุณสามารถใช้โครงสร้างเพย์โหลดที่คล้ายกับกระบวนการสร้าง นี่คือตัวอย่างการอัปเดตรายการกําหนดงาน Spark ที่สร้างในส่วนก่อนหน้า:
{
"displayName": "SJDHelloWorld",
"type": "SparkJobDefinition",
"definition": {
"format": "SparkJobDefinitionV2",
"parts": [
{
"path": "SparkJobDefinitionV1.json",
"payload": "<REDACTED>",
"payloadType": "InlineBase64"
},
{
"path": "Main/main.py",
"payload": "<REDACTED>",
"payloadType": "InlineBase64"
},
{
"path": "Libs/lib2.py",
"payload": "<REDACTED>",
"payloadType": "InlineBase64"
}
]
}
}
ด้วยเพย์โหลดข้างต้น จะมีการเปลี่ยนแปลงต่อไปนี้กับไฟล์:
- ไฟล์ main.py ได้รับการอัปเดตด้วยเนื้อหาใหม่
- lib1.py จะถูกลบออกจากรายการนิยามงาน Spark นี้และยังถูกลบออกจากที่เก็บข้อมูล OneLake ด้วย
- ไฟล์ lib2.py ใหม่จะถูกเพิ่มลงในรายการนิยามงาน Spark นี้และอัปโหลดไปยังที่เก็บข้อมูล OneLake
เพื่ออัปเดตรายการนิยามงาน Spark ให้ส่งคําขอ POST ไปยังปลายทาง https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items/{sjditemid} ที่มีข้อมูลข้างต้น การตอบกลับรหัส HTTP 202 แสดงว่ารายการกําหนดงาน Spark ได้รับการอัปเดตสําเร็จแล้ว