Освоение обработки пакетных данных с помощью универсального инструмента для работы с данными VDK (Versatile Data Kit)

Мастерство обработки пакетных данных с помощью универсального инструмента VDK (Versatile Data Kit)

Управление данными

Обучающее руководство о том, как использовать VDK для выполнения пакетной обработки данных

Фото Мика Баумейстер на Unsplash

Versatile Data Kit (VDK) – это среда открытого исходного кода для преобразования и обработки данных, разработанная для упрощения сложностей управления данными. В то время как VDK может обрабатывать различные задачи интеграции данных, включая потоковую обработку в реальном времени, в этой статье речь пойдет о том, как использовать его для пакетной обработки данных.

Эта статья охватывает следующее:

  • Введение в пакетную обработку данных
  • Создание и управление пакетными обработчиками данных в VDK
  • Мониторинг пакетной обработки данных в VDK

1 Введение в пакетную обработку данных

Пакетная обработка данных – это метод обработки больших объемов данных в определенные промежутки времени. Для пакетных данных характерно следующее:

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

Кроме того, пакетные данные могут быть обработаны в автономном режиме, то есть для этого не требуется постоянное подключение к источникам данных или внешним сервисам. Эта особенность ценна тогда, когда источники данных могут быть временно недоступными.

ELT (извлечение, загрузка, преобразование) – типичный случай использования пакетной обработки данных. ELT включает три основные фазы:

  • Извлечение (E): данные извлекаются из различных источников в разных форматах, как структурированных, так и неструктурированных.
  • Загрузка (L): данные загружаются в целевое место, например, в хранилище данных.
  • Преобразование (T): извлеченные данные обычно требуют предварительной обработки, такой как очистка, гармонизация и преобразование в общий формат.

Теперь, когда вы узнали, что такое пакетная обработка данных, перейдем к следующему шагу: создание и управление пакетными обработчиками данных в VDK.

2 Создание и управление пакетными обработчиками данных в VDK

VDK применяет компонентный подход, позволяющий быстро создавать конвейеры обработки данных. Для ознакомления с VDK обратитесь к моей предыдущей статье Обзор Versatile Data Kit. В данной статье предполагается, что вы уже установили VDK на свой компьютер.

Для объяснения принципа работы пакетного конвейера обработки данных в VDK рассмотрим сценарий, в котором вам необходимо выполнить задачу ELT.

Представьте, что вы хотите в VDK загрузить и обработать картинки Винсента Ван Гога, доступные в Europeana, известном европейском агрегаторе культурного наследия. Europeana предоставляет все объекты культурного наследия через свой общедоступный REST API. В отношении Винсента Ван Гога Europeana предоставляет более 700 работ.

На следующей диаграмме показаны шаги пакетной обработки данных в данном сценарии.

Изображение автора

Давайте рассмотрим каждый пункт отдельно. Полный код для реализации этого сценария вы можете найти в репозитории VDK на GitHub.

2.1 Извлечение и Загрузка

Этап включает в себя выполнение заданий VDK, которые вызывают REST API Europeana для извлечения необработанных данных. Конкретно, он определяет три задачи:

  • задача 1 – удалить существующую таблицу (если таковая имеется)
  • задача 2 – создать новую таблицу
  • задача 3 – внедрить значения таблицы напрямую из REST API.

Для работы этого примера необходимо активное подключение к Интернету для доступа к REST API Europeana. Эта операция является пакетным процессом, поскольку данные загружаются только один раз и не требуют оптимизации.

Извлеченные данные мы будем хранить в таблице. Сложность данной задачи заключается в построении отображения между REST API, которое выполняется в задаче 3.

Написание задачи 3 сводится к написанию кода на языке Python для выполнения этого отображения. Однако вместо сохранения полученного файла в локальный файл, мы вызываем функцию VDK (job_input.send_tabular_data_for_ingestion), чтобы сохранить файл в VDK, как показано в следующем фрагменте кода:

import inspectimport loggingimport osimport pandas as pdimport requestsfrom vdk.api.job_input import IJobInputdef run(job_input: IJobInput):    """    Загрузка наборов данных, необходимых для сценария, и помещение их в озеро данных.    """    log.info(f"Начало шага задания {__name__}")    api_key = job_input.get_property("api_key")    start = 1    rows = 100    basic_url = f"https://api.europeana.eu/record/v2/search.json?wskey={api_key}&query=who:%22Vincent%20Van%20Gogh%22"    url = f"{basic_url}&rows={rows}&start={start}"    response = requests.get(url)    response.raise_for_status()    payload = response.json()    n_items = int(payload["totalResults"])    while start < n_items:        if start > n_items - rows:            rows = n_items - start + 1        url = f"{basic_url}&rows={rows}&start={start}"        response = requests.get(url)        response.raise_for_status()        payload = response.json()["items"]        df = pd.DataFrame(payload)        job_input.send_tabular_data_for_ingestion(            df.itertuples(index=False),            destination_table="assets",            column_names=df.columns.tolist(),        )        start = start + rows

Полный код можно найти в примере на GitHub. Обратите внимание, что для загрузки данных из Europeana вам потребуется бесплатный ключ API.

Выходные данные, полученные на этапе извлечения, представляют собой таблицу, содержащую необработанные значения.

2.2 Преобразование

На этом этапе происходит очистка данных и извлечение только соответствующей информации. Мы можем реализовать связанные задачи в VDK с помощью двух задач:

  • задача 4 – удалить существующую таблицу (если таковая имеется)
  • задача 5 – создать очищенную таблицу.

Задача 5 просто включает написание SQL-запроса, как показано в следующем фрагменте кода:

CREATE TABLE cleaned_assets AS (    SELECT        SUBSTRING(country, 3, LENGTH(country)-4) AS country,        SUBSTRING(edmPreview, 3, LENGTH(edmPreview)-4) AS edmPreview,        SUBSTRING(provider, 3, LENGTH(provider)-4) AS provider,        SUBSTRING(title, 3, LENGTH(title)-4) AS title,        SUBSTRING(rights, 3, LENGTH(rights)-4) AS rights    FROM assets)

Запуск этой задачи в VDK приведет к созданию другой таблицы с именем cleaned_asset, содержащей обработанные значения. Наконец, мы готовы использовать очищенные данные где-то. В нашем случае мы можем создать веб-приложение, которое показывает извлеченные картины. Полный код для выполнения этой задачи вы найдете в репозитории VDK на GitHub.

3 Мониторинг Пакетной Обработки Данных в VDK

VDK предоставляет VDK UI, графический интерфейс пользователя для мониторинга данных задач. Чтобы установить VDK UI, следуйте официальному видеоролику по VDK по ссылке здесь. На следующей картинке показан снимок экрана VDK UI.

Image by Author

Есть две основные страницы:

  • Исследовать: На этой странице вы можете исследовать данные о заданиях, такие как процент успешного выполнения заданий, задания с неудачными выполнениями за последние 24 часа и наибольшее количество неудачных выполнений за последние 24 часа.
  • Управлять: На этой странице представлена более подробная информация о заданиях. Вы можете сортировать задания по столбцам, искать несколько параметров, фильтровать по некоторым столбцам, просматривать исходный код для конкретного задания, добавлять другие столбцы и т. д.

Посмотрите следующее официальное видео VDK, чтобы узнать, как использовать VDK UI.

Резюме

Поздравляю! Вы только что научились реализовывать пакетную обработку данных в VDK! Вам нужно только загрузить и обработать исходные данные, а затем использовать их для своих целей! Вы можете найти множество других примеров в репозитории VDK на GitHub.

Следите за актуальными новостями и передовыми методами обработки данных в VDK. Продолжайте исследовать и совершенствовать свои навыки!

Обзор Versatile Data Kit

Начало работы с Versatile Data Kit, фреймворком, который делает работу Data Engineer более эффективной

towardsdatascience.com

Обработка пропущенных значений в Versatile Data Kit

Руководство по созданию конвейеров обработки данных с использованием VDK для обработки пропущенных значений

towardsdatascience.com

От исходных данных до чистой базы данных: Глубокий погружение в Versatile Data Kit

Полный пример использования Versatile Data Kit (недавно выпущенного фреймворка от VMware) и Trino DB

towardsdatascience.com