แชร์ผ่าน


บทช่วยสอนส่วนที่ 1: ใช้ Apache Spark เพื่อนําเข้าข้อมูลลงใน Microsoft Fabric lakehouse

บทช่วยสอนนี้จะนําเข้าข้อมูลลงในทะเลสาบ Fabric ในรูปแบบ delta lake เรากําหนดคําศัพท์ที่สําคัญบางคําที่นี่:

  • เลคเฮ้าส์ - เลคเฮ้าส์ เป็นคอลเลกชันของไฟล์ โฟลเดอร์ และ/หรือตารางที่แสดงฐานข้อมูลผ่าน data lake โปรแกรม Spark และกลไก SQL ใช้ทรัพยากรของเลคเฮ้าส์สําหรับการประมวลผลข้อมูลขนาดใหญ่ เมื่อคุณใช้ตารางที่จัดรูปแบบ Delta แบบโอเพนซอร์ส การประมวลผลนั้นจะรวมความสามารถในการทําธุรกรรมของ ACID ที่ปรับปรุงประสิทธิภาพแล้ว

  • Delta Lake - Delta Lake เป็นเลเยอร์ที่เก็บข้อมูลแบบโอเพนซอร์สที่นําธุรกรรม ACID การจัดการเมตาดาต้าที่ปรับขนาดได้ และการประมวลผลชุดงานและการสตรีมข้อมูลไปยัง Apache Spark ในฐานะรูปแบบตารางข้อมูล Delta Lake ขยายไฟล์ข้อมูล Parquet ด้วยบันทึกธุรกรรมตามไฟล์สําหรับการทําธุรกรรม ACID และการจัดการเมตาดาต้าที่ปรับขนาดได้

  • Azure Open Datasets ได้รับการรวบรวมชุดข้อมูลสาธารณะที่เพิ่มคุณลักษณะเฉพาะของสถานการณ์ไปยังโซลูชันการเรียนรู้ของเครื่อง ซึ่งทําให้แบบจําลองมีความแม่นยํามากขึ้น เปิดชุดข้อมูลคือแหล่งข้อมูลบนระบบคลาวด์ที่อยู่ใน Microsoft Azure Storage Apache Spark, REST API, Data Factory และเครื่องมืออื่น ๆ สามารถเข้าถึงชุดข้อมูลที่เปิดอยู่

ในบทช่วยสอนนี้ คุณจะใช้ Apache Spark เพื่อ:

  • อ่านข้อมูลจากคอนเทนเนอร์ Azure Open Datasets
  • เขียนข้อมูลลงในตาราง Delta ของ Fabric lakehouse

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

  • เพิ่มเลคเฮาส์ ลงในสมุดบันทึกนี้ ในบทช่วยสอนนี้ คุณดาวน์โหลดข้อมูลจาก blob สาธารณะก่อน จากนั้น ข้อมูลจะถูกเก็บไว้ในทรัพยากรของ lakehouse นั้น

ติดตามในสมุดบันทึก

สมุดบันทึก 1-ingest-data.ipynb มาพร้อมกับบทช่วยสอนนี้

ข้อมูลการเลิกใช้บริการของธนาคาร

ชุดข้อมูลประกอบด้วยข้อมูลสถานะการเลิกใช้บริการสําหรับลูกค้า 10,000 ราย นอกจากนี้ยังมีแอตทริบิวต์ที่อาจมีผลต่อการเลิกใช้บริการ - ตัวอย่างเช่น:

  • คะแนนเครดิต
  • ตําแหน่งที่ตั้งทางภูมิศาสตร์ (เยอรมนี ฝรั่งเศส สเปน)
  • เพศ (ชาย, หญิง)
  • อายุ
  • ระยะเวลาการครอบครอง (จํานวนปีที่ลูกค้าเป็นลูกค้าที่ธนาคารนั้น)
  • ยอดคงเหลือบัญชี
  • เงินเดือนโดยประมาณ
  • จํานวนผลิตภัณฑ์ที่ลูกค้าซื้อผ่านธนาคาร
  • สถานะบัตรเครดิต (ลูกค้ามีบัตรเครดิตหรือไม่ก็ตาม)
  • สถานะสมาชิกที่ใช้งานอยู่ (ไม่ว่าลูกค้ามีสถานะลูกค้าของธนาคารที่ใช้งานอยู่หรือไม่)

ชุดข้อมูลยังรวมถึงคอลัมน์เหล่านี้:

  • หมายเลขแถว
  • ID ลูกค้า
  • นามสกุลของลูกค้า

คอลัมน์เหล่านี้ไม่ควรมีอิทธิพลต่อการตัดสินใจของลูกค้าที่จะออกจากธนาคาร

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

แถวชุดข้อมูลตัวอย่าง:

"CustomerID" "นามสกุล" "CreditScore" "ภูมิศาสตร์" "เพศ" "อายุ" "ระยะเวลาการครอบครอง" "ยอดคงเหลือ" "NumOfProducts" "HasCrCard" "IsActiveMember" "ประมาณการเงินเดือน" "ออกแล้ว"
15634602 ฮาร์กราฟ 619 ฝรั่งเศส หญิง 42 2 0.00 1 1 1 101348.88 1
15647311 ภูเขา 608 สเปน หญิง 41 1 83807.86 1 0 1 112542.58 0

ดาวน์โหลดชุดข้อมูลและอัปโหลดไปยัง lakehouse

ปลาย

เมื่อคุณกําหนดพารามิเตอร์ต่อไปนี้ คุณสามารถใช้สมุดบันทึกนี้กับชุดข้อมูลที่แตกต่างกันได้อย่างง่ายดาย:

IS_CUSTOM_DATA = False  # if TRUE, dataset has to be uploaded manually

DATA_ROOT = "/lakehouse/default"
DATA_FOLDER = "Files/churn"  # folder with data files
DATA_FILE = "churn.csv"  # data file name

ส่วนย่อยของโค้ดต่อไปนี้จะดาวน์โหลดชุดข้อมูลเวอร์ชันที่พร้อมใช้งานแบบสาธารณะ แล้วจัดเก็บทรัพยากรนั้นใน Fabric lakehouse:

สําคัญ

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

import os, requests
if not IS_CUSTOM_DATA:
# Download demo data files into lakehouse if not exist
    remote_url = "https://synapseaisolutionsa.z13.web.core.windows.net/data/bankcustomerchurn"
    file_list = [DATA_FILE]
    download_path = f"{DATA_ROOT}/{DATA_FOLDER}/raw"

    if not os.path.exists("/lakehouse/default"):
        raise FileNotFoundError(
            "Default lakehouse not found, please add a lakehouse and restart the session."
        )
    os.makedirs(download_path, exist_ok=True)
    for fname in file_list:
        if not os.path.exists(f"{download_path}/{fname}"):
            r = requests.get(f"{remote_url}/{fname}", timeout=30)
            with open(f"{download_path}/{fname}", "wb") as f:
                f.write(r.content)
    print("Downloaded demo data files into lakehouse.")

คุณใช้ข้อมูลที่คุณเพิ่งนําเข้า: