#git #apache-spark #amazon-s3 #apache-zeppelin #aws-glue
#git #apache-spark #amazon-s3 #apache-zeppelin #aws-glue
Вопрос:
Каков идеальный жизненный цикл разработки для задания клея? Я смог создать задание на выполнение склеивания. Окно скрипта задания отстой как IDE, что привело меня к изучению ноутбуков. У меня запущен сервер notebook, и я могу использовать ту же корзину S3, что и в моих заданиях на склейку.
Если notebooks — идеальная среда разработки для написания и разработки вашего задания glue / spark. Как только у вас будет сценарий таким, каким вы его хотите, есть ли простой «путь к развертыванию», чтобы превратить записную книжку в работу? Я вижу два разных рабочих процесса
-
Копировать и вставить — не элегантно, но просто, скопируйте код из записной книжки и вставьте его в новое определение задания склеивания. Вы скрещиваете пальцы, чтобы код в записной книжке не рассинхронизировался с заданием склеивания.
-
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.