Aracılığıyla paylaş


Öğretici 1. Bölüm: Microsoft Fabric lakehouse'a veri almak için Apache Spark kullanma

Bu öğretici, Delta Lake biçimindeki verileri Fabric lakehouse'larına yükler. Burada bazı önemli terimler tanımlıyoruz:

  • Lakehouse - Lakehouse , bir veri gölü üzerindeki veritabanını temsil eden dosya, klasör ve / veya tablo koleksiyonudur. Spark altyapısı ve SQL altyapısı, büyük veri işleme için lakehouse kaynaklarını kullanır. Açık kaynak Delta biçimli tabloları kullandığınızda, bu işleme gelişmiş ACID işlem özelliklerini içerir.

  • Delta Lake - Delta Lake, ACID işlemlerini, ölçeklenebilir meta veri yönetimini ve toplu iş ve akış verisi işlemeyi Apache Spark'a getiren bir açık kaynak depolama katmanıdır. Veri tablosu biçimi olarak Delta Lake, ACID işlemleri ve ölçeklenebilir meta veri yönetimi için dosya tabanlı işlem günlüğüyle Parquet veri dosyalarını genişletir.

  • Azure Açık Veri Kümeleri , makine öğrenmesi çözümlerine senaryoya özgü özellikler ekleyen genel veri kümeleridir. Bu, daha doğru modellere yol açar. Açık Veri Kümeleri, Microsoft Azure Depolama'da bulunan bulut kaynaklarıdır. Apache Spark, REST API, Data factory ve diğer araçlar Açık Veri Kümelerine erişebilir.

Bu öğreticide Apache Spark'ı kullanarak:

  • Azure Open Datasets kapsayıcılarından verileri okuma.
  • Fabric lakehouse delta tablosuna veri yazma.

Önkoşullar

  • Bu not defterine bir göl evi ekleyin. Bu öğreticide, genel bir blobdan veri indirip ardından verileri lakehouse kaynağında depolayacaksınız.

Bir deftere not alarak takip et

Bu öğreticiye 1-ingest-data.ipynb not defteri eşlik eder.

Banka değişim sıklığı verileri

Veri kümesi 10.000 müşteri için değişim durumu bilgilerini içerir. Ayrıca değişim sıklıklarını etkileyebilecek öznitelikler de içerir; örneğin:

  • Kredi puanı
  • Coğrafi konum (Almanya, Fransa, İspanya)
  • Cinsiyet (erkek, kadın)
  • Yaş
  • Süre (müşterinin o bankada müşteri olduğu yıl sayısı)
  • Hesap bakiyesi
  • Tahmini maaş
  • Müşterinin bankadan satın aldığı ürün sayısı
  • Kredi kartı durumu (müşterinin kredi kartı olup olmadığı)
  • Etkin üye durumu (müşterinin etkin bir banka müşteri durumuna sahip olup olmadığı)

Veri kümesi şu sütunları da içerir:

  • satır numarası
  • müşteri kimliği
  • müşteri soyadı

Bu sütunların müşterinin bankadan ayrılma kararı üzerinde hiçbir etkisi olmamalıdır.

Bir müşteri banka hesabının kapatılması, bu müşterinin değişim oranını tanımlar. Veri kümesi exited sütunu müşteri terkine atıfta bulunur. Bu öznitelikler hakkında çok az bağlam olduğundan veri kümesi hakkında arka plan bilgileri olmadan devam etmeniz gerekir. Amacımız, bu özniteliklerin exited duruma nasıl katkıda bulunduğunu anlamaktır.

Örnek veri kümesi satırları:

"CustomerID" "Soyadı" Kredi Notu "Coğrafya" "Cinsiyet" "Yaş" "Görev Süresi" "Bakiye" ÜrünSayısı "HasCrCard" AktifÜyeMi Tahmini Maaş "Çıktı"
15634602 Hargrave 619 Fransa Dişi 42 2 0,00 1 1 1 101348.88 1
15647311 Tepe 608 İspanya Dişi 41 1 83807.86 1 0 1 112542.58 0

Veri kümesini indirme ve lakehouse'a yükleme

İpucu

Aşağıdaki parametreleri tanımlarken, bu not defterini farklı veri kümeleriyle kolayca kullanabilirsiniz:

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

Aşağıdaki kod parçacığı veri kümesinin genel kullanıma açık bir sürümünü indirir ve ardından bu kaynağı bir Fabric lakehouse'da depolar:

Önemli

Çalıştırmadan önce not defterine bir göl evi eklediğinizden emin olun. Bunun yapılmaması hatayla sonuçlanır.

import os, requests
if not IS_CUSTOM_DATA:
# Download demo data files into lakehouse if not exist
    remote_url = "https://synapseaisolutionsa.blob.core.windows.net/public/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.")

Yeni alınan verileri kullanırsınız: