Задания AWS Glue не записываются в S3

Я только что поигрался с Glue, но еще не получил его, чтобы успешно создать новую таблицу в существующем ведре S3. Задание будет выполнено без ошибок, но в S3 никогда не будет вывода.

Вот что такое автоматически сгенерированный код:

glueContext.write_dynamic_frame.from_options(frame = applymapping1, 
connection_type = "s3", connection_options = {"path": 
"s3://glueoutput/output/"}, format = "json", transformation_ctx = 
"datasink2") 

Пробовали все варианты этого - с именем файла (который еще не существует), в корневой папке ведра, завершающей косой чертой и без. Используемая роль имеет полный доступ к S3. Пробовал создавать ведра в разных регионах. Однако ни один файл не создается. Консоль снова говорит об успешном.


person billobo    schedule 21.09.2017    source источник
comment
Вы используете автоматически сгенерированный сценарий в качестве отправной точки или создаете свой собственный с нуля? Выглядит нормально, поэтому я думаю, что какой-то другой фрагмент кода сломан.   -  person MadCityDev    schedule 25.09.2017
comment
Да - полностью автоматически сгенерирован.   -  person billobo    schedule 01.10.2017


Ответы (3)


ваш код правильный, просто проверьте, есть ли вообще какие-либо данные в applymapping1 DF? вы проверяете с помощью этой команды: applymapping1.toDF (). show ()

person letstry    schedule 25.09.2017
comment
Это доказало, что динамический фрейм имел данные, отображая их в журнале. Я тоже отключил закладку. Эти две вещи решили проблему для меня. - person Drellgor; 10.04.2018

Как предлагает @Drellgor в своем комментарии к предыдущему ответу, убедитесь, что вы отключили закладки заданий, если вы определенно не хотите обрабатывать старые файлы.

Из документации:

AWS Glue отслеживает данные, которые уже были обработаны во время предыдущего запуска задания ETL, сохраняя информацию о состоянии из выполнения задания. Эта постоянная информация о состоянии называется закладкой задания. Закладки заданий помогают AWS Glue поддерживать информацию о состоянии и предотвращать повторную обработку старых данных.

person Sinan Erdem    schedule 06.03.2021

Вам необходимо отредактировать свою роль IAM. Вы должны определить свою роль IAM, которая может писать, а также читать с S3.

  1. Перейдите в консоль AWS
  2. Перейти в IAM
  3. Политики
  4. Изменить политику
  5. Добавьте следующий объект «Поместить и удалить» для S3 в дополнение к получению объекта.
  6. Затем сохраните

Убедитесь, что вы используете AWS Glue с отредактированной ролью IAM. Удачи.

"Effect": "Allow",
        "Action": [
            "s3:GetObject",
            "s3:PutObject",
            "s3:DeleteObject"
person Omur    schedule 08.03.2021