หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
สถานการณ์นี้แสดงวิธีการเชื่อมต่อกับ OneLake ผ่าน Azure Databricks หลังจากเสร็จสิ้นบทช่วยสอนนี้ คุณจะสามารถอ่านและเขียนไปยังเลคเฮาส์ Microsoft Fabric จากพื้นที่ทํางาน Azure Databricks ของคุณได้
ข้อกําหนดเบื้องต้น
ก่อนที่คุณจะเชื่อมต่อ คุณต้องมี:
- พื้นที่ทํางานผ้าและเลคเฮาส์
- พื้นที่ทํางาน Azure Databricks ระดับพรีเมียม เฉพาะพื้นที่ทํางาน Azure Databricks แบบพรีเมียมเท่านั้นที่สนับสนุนการส่งผ่านข้อมูลประจําตัวของ Microsoft Entra ซึ่งคุณต้องการสําหรับสถานการณ์นี้
ตั้งค่าพื้นที่ทํางาน Databricks ของคุณ
เปิดพื้นที่ทํางาน Azure Databricks ของคุณ แล้วเลือก สร้าง>คลัสเตอร์
เมื่อต้องการรับรองความถูกต้องกับ OneLake ด้วยข้อมูลประจําตัว Microsoft Entra คุณต้องเปิดใช้งานการส่งผ่านข้อมูลประจําตัว Azure Data Lake Storage (ADLS) บนคลัสเตอร์ของคุณในตัวเลือกขั้นสูง
Note
คุณยังสามารถเชื่อมต่อ Databricks กับ OneLake โดยใช้บริการหลัก สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการรับรองความถูกต้องของ Azure Databricks โดยใช้บริการหลัก โปรดดู จัดการบริการหลัก
สร้างคลัสเตอร์ด้วยพารามิเตอร์ที่คุณต้องการ สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างคลัสเตอร์ Databricks โปรดดู กําหนดค่าคลัสเตอร์ - Azure Databricks
เปิดสมุดบันทึกและเชื่อมต่อกับคลัสเตอร์ที่สร้างขึ้นใหม่
เขียนสมุดบันทึกของคุณ
นําทางไปยังเลคเฮาส์ Fabric ของคุณและคัดลอกเส้นทางระบบไฟล์ Azure Blob (ABFS) ไปยังเลคเฮาส์ของคุณ คุณสามารถค้นหาได้ในบานหน้าต่างคุณสมบัติ
Note
Azure Databricks รองรับเฉพาะไดรเวอร์ Azure Blob Filesystem (ABFS) เมื่ออ่านและเขียนไปยัง ADLS Gen2 และ OneLake:
abfss://myWorkspace@onelake.dfs.fabric.microsoft.com/บันทึกเส้นทางไปยังเลคเฮาส์ของคุณในสมุดบันทึก Databricks ของคุณ เลคเฮาส์นี้เป็นที่ที่คุณเขียนข้อมูลที่ประมวลผลในภายหลัง:
oneLakePath = 'abfss://myWorkspace@onelake.dfs.fabric.microsoft.com/myLakehouse.lakehouse/Files/'โหลดข้อมูลจากชุดข้อมูลสาธารณะของ Databricks ลงในกรอบข้อมูล คุณยังสามารถอ่านไฟล์จากที่อื่นใน Fabric หรือเลือกไฟล์จากบัญชี ADLS Gen2 อื่นที่คุณเป็นเจ้าของอยู่แล้ว
yellowTaxiDF = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/databricks-datasets/nyctaxi/tripdata/yellow/yellow_tripdata_2019-12.csv.gz")กรอง แปลง หรือเตรียมข้อมูลของคุณ สําหรับสถานการณ์นี้ คุณสามารถตัดชุดข้อมูลของคุณเพื่อการโหลดที่เร็วขึ้น รวมกับชุดข้อมูลอื่นๆ หรือกรองลงไปยังผลลัพธ์ที่เฉพาะเจาะจง
filteredTaxiDF = yellowTaxiDF.where(yellowTaxiDF.fare_amount<4).where(yellowTaxiDF.passenger_count==4) display(filteredTaxiDF)เขียนดาต้าเฟรมที่กรองของคุณไปยังเลคเฮาส์ Fabric โดยใช้เส้นทาง OneLake ของคุณ
filteredTaxiDF.write.format("csv").option("header", "true").mode("overwrite").csv(oneLakePath)ทดสอบว่าข้อมูลของคุณเขียนสําเร็จโดยการอ่านไฟล์ที่โหลดใหม่
lakehouseRead = spark.read.format('csv').option("header", "true").load(oneLakePath) display(lakehouseRead.limit(10))
การตั้งค่าเสร็จสมบูรณ์ และตอนนี้คุณสามารถอ่านและเขียนข้อมูลใน Fabric โดยใช้ Azure Databricks ได้แล้ว
การเชื่อมต่อกับ OneLake โดยใช้การประมวลผลแบบไร้เซิร์ฟเวอร์ของ Databricks
การประมวลผลแบบไร้เซิร์ฟเวอร์ของ Databricks ช่วยให้คุณสามารถเรียกใช้ปริมาณงานได้โดยไม่ต้องจัดเตรียมคลัสเตอร์ ตามเอกสารประกอบของ Databricks แบบไร้เซิร์ฟเวอร์ เพื่อทําให้การกําหนดค่า Spark บนการประมวลผลแบบไร้เซิร์ฟเวอร์เป็นแบบอัตโนมัติ Databricks แบบไร้เซิร์ฟเวอร์ไม่อนุญาตให้กําหนดค่าคุณสมบัติ Spark นอกคุณสมบัติที่รองรับซึ่งแสดงไว้ที่นี่
Note
ข้อจํากัดนี้ไม่ได้มีเฉพาะกับ Azure Databricks เท่านั้น การใช้งานแบบไร้เซิร์ฟเวอร์ของ Databricks บน Amazon Web Services (AWS) และ Google Cloud แสดงพฤติกรรมเดียวกัน
หากคุณพยายามแก้ไขหรือตั้งค่าการกําหนดค่า Spark ที่ไม่รองรับในสมุดบันทึกที่เชื่อมโยงกับการประมวลผลแบบไร้เซิร์ฟเวอร์ของ Databricks ระบบจะส่งกลับข้อผิดพลาด CONFIG_NOT_AVAILABLE
OneLake รองรับการเชื่อมต่อขาเข้าจากการประมวลผลแบบไร้เซิร์ฟเวอร์ของ Databricks คุณสามารถเชื่อมต่อกับ OneLake (จากการประมวลผลแบบไร้เซิร์ฟเวอร์ของ Databricks) ได้หากคุณมีการเข้าถึงที่เหมาะสมและมีเส้นทางเครือข่ายระหว่างการประมวลผลแบบไร้เซิร์ฟเวอร์ของ Databricks และ OneLake เมื่อใช้ Databricks แบบไร้เซิร์ฟเวอร์ คุณต้องแน่ใจว่าโค้ดของคุณไม่ได้แก้ไขคุณสมบัติ Spark ที่ไม่รองรับ
ข้อกําหนดเบื้องต้น
ก่อนที่คุณจะเชื่อมต่อ คุณต้องมี:
- พื้นที่ทํางานผ้าและเลคเฮาส์
- พื้นที่ทํางาน Azure Databricks ระดับพรีเมียม
- บริการหลักที่มีการกําหนดบทบาทพื้นที่ทํางาน ผู้สนับสนุน ขั้นต่ํา
- ข้อมูลลับของฐานข้อมูลหรือ Azure Key Vault (AKV) เพื่อจัดเก็บและดึงข้อมูลลับ ตัวอย่างนี้ใช้ข้อมูลลับของ Databricks
เขียนสมุดบันทึกของคุณ
สร้างสมุดบันทึกในพื้นที่ทํางาน Databricks และแนบไปกับการประมวลผลแบบไร้เซิร์ฟเวอร์
นําเข้าโมดูล Python - ในตัวอย่างนี้ คุณกําลังใช้สามโมดูล:
- msal คือ Microsoft Authentication Library (MSAL) และได้รับการออกแบบมาเพื่อช่วยให้นักพัฒนารวมการรับรองความถูกต้องของแพลตฟอร์มข้อมูลประจําตัวของ Microsoft เข้ากับแอปพลิเคชันของตน
- requests ใช้เพื่อสร้างคําขอ HTTP โดยใช้ Python
- delta lake ใช้เพื่ออ่านและเขียนตาราง Delta Lake โดยใช้ Python
from msal import ConfidentialClientApplication import requests from deltalake import DeltaTableประกาศตัวแปรสําหรับผู้เช่า Microsoft Entra รวมถึงรหัสแอปพลิเคชัน ใช้รหัสผู้เช่าของผู้เช่าที่มีการปรับใช้ Microsoft Fabric
# Fetch from Databricks secrets. tenant_id = dbutils.secrets.get(scope="<replace-scope-name>",key="<replace value with key value for tenant _id>") client_id = dbutils.secrets.get(scope="<replace-scope-name>",key="<replace value with key value for client _id>") client_secret = dbutils.secrets.get(scope="<replace-scope-name>",key="<replace value with key value for secret>")ประกาศตัวแปรพื้นที่ทํางาน Fabric
workspace_id = "<replace with workspace name>" lakehouse_id = "<replace with lakehouse name>" table_to_read = "<name of lakehouse table to read>" storage_account_name = workspace_id onelake_uri = f"abfss://{workspace_id}@onelake.dfs.fabric.microsoft.com/{lakehouse_id}.lakehouse/Tables/{table_to_read}"เริ่มต้นไคลเอ็นต์เพื่อรับโทเค็น
authority = f"https://login.microsoftonline.com/{tenant_id}" app = ConfidentialClientApplication( client_id, authority=authority, client_credential=client_secret ) result = app.acquire_token_for_client(scopes=["https://onelake.fabric.microsoft.com/.default"]) if "access_token" in result: access_token = result["access_token"] print("Access token acquired.") token_val = result['access_token']อ่านตารางเดลต้าจาก OneLake
dt = DeltaTable(onelake_uri, storage_options={"bearer_token": f"{token_val}", "use_fabric_endpoint": "true"}) df = dt.to_pandas() print(df.head())Note
บริการหลักมีการกําหนดบทบาทพื้นที่ทํางาน ผู้สนับสนุน และคุณสามารถใช้เพื่อเขียนข้อมูลกลับไปยัง OneLake ได้
การตั้งค่าเสร็จสมบูรณ์ และตอนนี้คุณสามารถอ่านข้อมูลจาก OneLake โดยใช้ Databricks ซึ่งเป็นสมุดบันทึกที่แนบมากับการประมวลผลแบบไร้เซิร์ฟเวอร์