Жизненный цикл задания склеивания AWS — из записной книжки в задание

#git #apache-spark #amazon-s3 #apache-zeppelin #aws-glue

#git #apache-spark #amazon-s3 #apache-zeppelin #aws-glue

Вопрос:

Каков идеальный жизненный цикл разработки для задания клея? Я смог создать задание на выполнение склеивания. Окно скрипта задания отстой как IDE, что привело меня к изучению ноутбуков. У меня запущен сервер notebook, и я могу использовать ту же корзину S3, что и в моих заданиях на склейку.

Если notebooks — идеальная среда разработки для написания и разработки вашего задания glue / spark. Как только у вас будет сценарий таким, каким вы его хотите, есть ли простой «путь к развертыванию», чтобы превратить записную книжку в работу? Я вижу два разных рабочих процесса

  1. Копировать и вставить — не элегантно, но просто, скопируйте код из записной книжки и вставьте его в новое определение задания склеивания. Вы скрещиваете пальцы, чтобы код в записной книжке не рассинхронизировался с заданием склеивания.

  2. S3 как хранилище для записных книжек — я даже не знаю, сработает ли это, но я видел в конфигурации, что Zeppelin может сохранять записные книжки в S3, это то, что вы делаете, это указываете Zeppelin и склеиваете задание в одно и то же местоположение S3

Есть ли какой-то другой способ сделать все это? Я также хотел бы использовать Git для управления версиями файлов заданий, поэтому, если есть какой-то способ встроить этот рабочий процесс, это тоже было бы неплохо.

Ответ №1:

Вы могли бы преобразовать записную книжку в скрипт на Python. Вот скрипт, который я использовал для этого.

И вот рабочий процесс, который я сейчас использую: когда вы объединяете ветку с основной веткой, запускается конвейер Jenkins, который клонирует код в вашем репозитории git, преобразует записную книжку в надлежащий код python, создает среду, запускает несколько тестов, а затем, если все пройдет успешно, загружает скрипт в корзину сценариев AWS Glue и, при необходимости, создает задание. После создания задания вам просто нужно перезаписать скрипт в корзине, чтобы обновить свой код.

Ответ №2:

Вы могли бы настроить конвейер кода AWS, который помещает код в указанное местоположение в S3:

  • Используйте CodeCommit для фиксации вашего локального кода в хранилище кода
  • Используйте CodeBuild, чтобы взять один или несколько файлов из репозитория и создать артефакт. Примером buildspec.yml является следующее:
 artifacts:
    files:
        - "glue_scripts/**/*"
  
  • Используйте CodeDeploy, выберите артефакт сборки в качестве источника и выберите корзину S3 в качестве цели
  • Затем в Glue назначьте местоположение скрипта заданию склеивания в разделе «Путь к скрипту»

Ответ №3:

Я создал библиотеку, которая упаковывает ваш код, отправляет его в glue и упорядочивает его по пошаговым функциям. Его цель — упростить процесс перехода от локальной разработки к запуску на AWS.

Установите его через pip install datajob . У вас должен быть установлен aws cdk.

Краткое руководство и примеры можно найти в репозитории github:https://github.com/vincentclaes/datajob

Если у вас возникнут проблемы, сообщите о проблеме на github.