Документ закладки AWS Glue (https://docs.aws. amazon.com/glue/latest/dg/monitor-continuations.html) кажется, что для работы закладки необходимо передать параметр transformation_ctx в операции источника, преобразования и поглощения. Это отражено в примере кода на этой странице, где вызов всех create_dynamic_frame.from_catalog(), ApplyMapping.apply() и write_dynamic_frame.from_options() передается со значением transformation_ctx.

Я понимаю смысл передачи такого метода transformation_ctx в create_dynamic_frame.from_catalog(), поскольку AWS Glue необходимо хранить информацию о файлах, которые были прочитаны в закладке под заданным ключом transformation_ctx.

Однако я не понимаю, почему это также необходимо для таких методов, как ApplyMapping.apply() и write_dynamic_frame.from_options(). Другими словами, какую информацию о состоянии эти операции должны сохранять в закладке? Если я не передам transformation_ctx этим методам, какие проблемы это вызовет?

5
victorx 24 Июн 2020 в 08:16

1 ответ

Лучший ответ

У меня были те же сомнения по поводу закладок несколько месяцев назад (октябрь 2019 г.), и поскольку документация, предоставленная Amazon, не очень ясна, я открыл обращение в службу поддержки, чтобы больше узнать, как это реализовано.

В моей работе с клеем было:

  • Функция чтения из S3 (glue_context.create_dynamic_frame.from_options)
  • ResolveChoice.apply
  • Функция записи в Redshift (glue_context.write_dynamic_frame.from_jdbc_conf)

Все эти операции имеют значение transform_ctx, я тестировал разные возможные варианты поведения (одинаковый transform_ctx для всех, разные фиксированные значения, динамические значения и т. Д.).

После многих сообщений с поддержкой AWS они подтверждают, что закладки работают только с функцией чтения (они также сказали, что в качестве источника используется только S3, но я не тестировал его), поэтому я спрашиваю, бесполезен ли transform_ctx в ResolveChoice (и функция записи тоже), и они сказали ДА! Они подтвердили, что это не имеет значения.

Кроме того, для функции записи она ничего не меняет, поэтому здесь нет логики закладок или «функции предотвращения», если она уже была запущена ранее.

5
Hyruma92 25 Июн 2020 в 08:38