Evolution
Тема интерфейса

Обработка данных из Object Storage

На этой странице вы найдете лабораторную работу по обработке данных из Evolution Object Storage с помощью Managed Spark.

Постановка задачи

Необходимо построить витрину данных, отражающую полную информацию о клиентах и продажах.

Таблица client.csv содержит информацию о клиентах: номер заказа, дату, город, имя и фамилию клиента, модель автомобиля и др.

Таблица sales.csv содержит информацию о продажах: номер заказа и его сумму.

В результате должна получиться таблица, в которой данные объединены по номеру заказа.

Перед началом работы

  1. Если вы уже зарегистрированы, войдите под своей учетной записью.

  2. Создайте кластер Data Platform, в котором будет размещен инстанс.

    Назовите кластер «dp-labs».

  3. Создайте пароль и добавьте его в Secret Manager. Этот секрет станет паролем для доступа к интерфейсу Spark.

Создайте бакет Object Storage

  1. Создайте бакет Object Storage по инструкции.

  2. Установите и запустите CyberDuck по инструкции.

Создайте инстанс Spark

  1. Перейдите в раздел Evolution и выберите сервис Managed Spark.

  2. Нажмите Создать инстанс.

  3. В блоке Общие параметры:

    • Название — spark-lab.

    • Кластер — dp-labs.

  4. В блоке Конфигурация оставьте значения по умолчанию.

  5. В блоке Настройки выберите:

    • Место храненияObject Storage.

    • Бакет — ранее созданный бакет S3.

  6. В поле Лог-группа выберите группу логов.

  7. Нажмите Продолжить.

  8. В блоке Сетевые настройки выберите:

  9. В блоке Настройки доступа:

    • Подключить публичный хост — активируйте опцию, чтобы опубликовать инстанс в интернете. Интерфейсы Spark History Server и Spark UI станут доступны из интернета.

    • Логин — задайте логин для доступа к Spark.

    • Пароль — выберите секрет для доступа к Spark.

      Вы можете создать новый секрет, нажав Создать новый секрет.

  10. Нажмите Создать.

Создание инстанса занимает около 15 минут. Пока создается инстанс, выполните шаги по подготовке структуры бакета Object Storage, данных и скрипта.

Подготовьте данные и скрипт

В лабораторной работе вам понадобятся:

  • таблица в формате CSV client.csv, которая содержит информацию о клиентах и деталях заказа;

  • таблица в формате CSV sales.csv, которая содержит информацию о продажах: ID заказа и сумму.

  • Python-скрипт, который:

    • читает таблицы sales.csv и client.csv;

    • объединяет таблицы по колонке order_number;

    • выгружает перечисленные в скрипте колонки.

Выполните следующие шаги, чтобы подготовить структуру бакета Object Storage и загрузить на него нужные файлы.

Подготовьте файлы CSV

  1. Скачайте sales.csv и client.csv. Нажмите Скачать в правом верхнем углу.

  2. Откройте CyberDuck.

  3. В бакете Object Storage создайте папку input.

  4. В этой папке создайте папку car-sales.

  5. Переместите CSV-таблицы в папку car-sales.

Скопируйте скрипт задачи

  1. Скопируйте скрипт и назовите файл spark-sales-etl.py.

  2. В строке bucket_name = 'your-bucket-name' замените your-bucket-name на название бакета Object Storage.

  3. В CyberDuck создайте папку jobs.

  4. Поместите скрипт в нее.

В результате получится следующая структура бакета с файлами:

../_images/cyberduck__s3-structure.PNG

Создайте задачу Spark

Для продолжения работы убедитесь, что статус инстанса Spark изменился на «Готов».

  1. Перейдите в раздел Evolution и выберите сервис Managed Spark.

  2. В списке инстансов Managed Spark откройте карточку инстанса spark-lab.

  3. Перейдите во вкладку Задачи.

  4. Нажмите Создать задачу.

  5. В блоке Общие параметры введите название задачи, например spark-sales.

  6. В блоке Скрипт приложения выберите Python.

  7. Укажите путь к запускаемой программе. В данном случае путь s3a://{bucket_name}/jobs/spark-sales-etl.py, где {bucket_name} — название созданного бакета Object Storage.

  8. Нажмите Создать.

Задача Spark начнет выполняться и отобразится на странице инстанса во вкладке Задачи.

Мониторинг выполнения задачи

Вы можете посмотреть логи задачи, когда задача находится в статусах «Выполняется» и «Готово», то есть как в процессе выполнения, так и по завершению задачи.

Перейдите к логам

  1. Откройте карточку инстанса.

  2. Во вкладке Задачи скопируйте ID задачи.

  3. Нажмите Горизонтальное меню и выберите Перейти к логам.

  4. В поле Запрос введите labels.spark_job_id="ID", где ID — идентификатор задачи, скопированный ранее.

  5. Нажмите Обновить.

В таблице отобразятся логи задачи. Нажмите на строку, чтобы развернуть запись.

Перейдите в Spark UI

  1. Откройте карточку инстанса.

  2. Во вкладке Задачи нажмите Spark UI.

    В соседней вкладке откроется интерфейс Spark UI.

  3. Вернитесь на карточку инстанса и откройте вкладку Информация.

  4. Скопируйте данные из блока Настройки доступа.

  5. Введите данные инстанса:

    • Username — значение поля Пользователь.

    • Password — значение секрета в поле Пароль.

В интерфейсе Spark UI вы найдете информацию о ходе выполнения задачи.

../_images/spark-ui__timeline.png ../_images/spark-ui__completed-jobs.png

Проверьте результат

Когда задача перейдет в статус «Выполнено», откройте CyberDuck. В бакете появятся:

  • новая папка sales;

  • таблица с объединенными данными из sales.csv и client.csv.

../_images/cyberduck__result.PNG