Поделиться через


Учебное пособие, часть 1: Использование Apache Spark для загрузки данных в Microsoft Fabric lakehouse

В этом руководстве показано, как загружать данные в Fabric lakehouses в формате Delta Lake. Здесь мы определяем некоторые важные термины:

  • Lakehouse — это коллекция файлов, папок и/или таблиц, представляющих базу данных над озером данных. Подсистема Spark и подсистема SQL используют ресурсы Lakehouse для обработки больших данных. При использовании таблиц с открытым исходным кодом формата Delta, обработка включает улучшенные возможности транзакций ACID.

  • Delta Lake — Delta Lake — это слой хранения с открытым исходным кодом, который обеспечивает транзакции ACID, масштабируемое управление метаданными и пакетную и потоковую обработку данных в Apache Spark. В качестве формата таблицы данных Delta Lake дополняет функциональность файлов данных Parquet с помощью журнала транзакций, основанного на файлах, для транзакций ACID и обеспечивающего масштабируемость управления метаданными.

  • Открытые наборы данных Azure — это курированные общедоступные наборы данных, которые добавляют функции, специфичные для определенных сценариев, в решения машинного обучения. Это приводит к более точным моделям. Открытые наборы данных — это облачные ресурсы, которые находятся в службе хранилища Microsoft Azure. Apache Spark, REST API, фабрика данных и другие средства могут получить доступ к открытым наборам данных.

В этом руководстве вы используете Apache Spark для:

  • Чтение данных из контейнеров Открытых наборов данных Azure.
  • Запись данных в разностную таблицу Fabric lakehouse.

Необходимые условия

  • Добавьте озерный дом в эту записную книжку. В этом руководстве вы сначала загружаете данные из публичного блоба. Затем данные хранятся в этом ресурсе Lakehouse.

Следуйте инструкциям в записной книжке

Записная книжка 1-ingest-data.ipynb сопровождает это руководство.

Данные об оттоке банка

Набор данных содержит сведения о состоянии оттока для 10 000 клиентов. Он также включает атрибуты, которые могут влиять на отток, например:

  • Кредитная оценка
  • Географическое расположение (Германия, Франция, Испания)
  • Пол (мужчина, женщина)
  • Возраст
  • Срок пребывания (число лет, которое клиент был клиентом в этом банке)
  • Баланс счета
  • Оценочная зарплата
  • Количество продуктов, приобретенных клиентом через банк
  • Состояние кредитной карты (независимо от того, имеет ли клиент кредитную карту)
  • Статус активного участника (независимо от того, имеет ли клиент статус активного банковского клиента)

Набор данных также включает следующие столбцы:

  • номер строки
  • Идентификатор клиента
  • фамилия клиента

Эти столбцы не должны влиять на решение клиента покинуть банк.

Закрытие банковского счета клиента определяет отток этого клиента. Столбец набора exited данных ссылается на отказ клиента. Контекста о этих атрибутах мало, поэтому необходимо действовать без фоновой информации о наборе данных. Наша цель состоит в том, чтобы понять, как эти атрибуты способствуют состоянию exited .

Примеры строк набора данных:

"CustomerID" "Фамилия" Кредитный рейтинг География "Пол" "Возраст" "Срок пребывания в должности" "Баланс" КоличествоТоваров HasCrCard АктивныйУчастник Предполагаемая зарплата "Выход"
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

Следующий фрагмент кода загружает общедоступную версию набора данных, а затем сохраняет этот ресурс в Lakehouse 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.")

Вы используете только что загруженные данные: