После чтения документов Amazon, я понимаю, что единственный способ запустить/протестировать Glue script - это развернуть его до конечной точки dev и при необходимости отладить удаленно. В то же время, если код (Python) состоит из нескольких файлов и пакетов, все, кроме основного script, необходимо закрепить. Все это дает мне ощущение, что Клей не подходит для любой сложной задачи ETL, поскольку разработка и тестирование являются громоздкими. Я мог бы проверить свой код Spark локально, не загружая код на S3 каждый раз, и проверять тесты на сервере CI без необходимости платить за конечную точку разработки.
Могу ли я проверить код клея AWS локально?
Ответ 1
Я разговаривал с инженером по продажам AWS, и они сказали, что нет, вы можете протестировать код Glue, только запустив преобразование Glue (в облаке). Он упомянул, что тестировалось что-то под названием Outpost, чтобы разрешить оперативные операции, но что это еще не было публично доступно. Так что это похоже на твердое "нет", что является позором, потому что в противном случае это выглядит довольно мило. Но без юнит-тестов, это не для меня.
Ответ 2
Вы можете хранить код клея и pyspark в отдельных файлах и локально тестировать код pyspark. Для архивирования файлов зависимостей мы написали сценарий оболочки, который архивирует файлы и загружает их в папку s3, а затем применяет шаблон CF для развертывания связующего задания. Для выявления зависимостей мы создали (склеить задание) файл _dependency.txt.
Ответ 3
В конце концов, по состоянию на 28 августа 2019 года Amazon позволяет загружать двоичные файлы и
разрабатывать, компилировать, отлаживать и выполнять одношаговые сценарии Glue ETL и сложные Приложения Spark в Scala и Python локально.
Проверьте эту ссылку: https://aws.amazon.com/about-aws/whats-new/2019/08/aws-glue-releases-binaries-of-glue-etl-libraries-for-glue-jobs/
Ответ 4
Не то, что я знаю, и если у вас много удаленных активов, это будет сложно. Используя Windows, я обычно запускаю конечную точку разработки и локальный ноутбук zeppelin, пока я создаю свою работу. Я закрывал его каждый день.
Вы можете использовать редактор заданий > script для редактирования, сохранения и запуска задания. Не уверен в стоимости.
Ответ 5
Добавление в CedricB,
Для целей разработки/тестирования не требуется загружать код на S3, и вы можете настроить zeppelin ноутбук локально, установить соединение SSH, чтобы вы могли получить доступ к каталогу/искателям данных и т.д. а также ведро s3, где хранятся ваши данные.
После завершения тестирования вы можете связать свой код и загрузить его в ведро S3. Затем создайте задание, указывающее на ETL script в ведре S3, чтобы задание могло быть запущено и запланировано. После завершения разработки/тестирования обязательно удалите конечную точку dev, так как мы заряжаемся даже в течение времени ожидания.
Привет