为什么在调用转换和接收器操作时需要设置"transformation_ctx"参数才能使 AWS G



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传递给这些方法,这会导致什么问题?

几个月前(2019 年 10 月(我对书签也有同样的疑问,由于亚马逊提供的文档不是很清楚,我打开了一个支持案例以了解更多它是如何实现的。

在我的胶水工作中,有:

  • 来自 S3 的读取函数 (glue_context.create_dynamic_frame.from_options(
  • A ResolveChoice.apply
  • Redshift 的写入函数 (glue_context.write_dynamic_frame.from_jdbc_conf(

所有这些操作都具有transformation_ctx值,我测试了不同的可能行为(所有相同的transformation_ctx,不同的固定值,动态值ecc(。

在与AWS支持人员发送了许多消息后,他们确认书签仅适用于读取功能(他们还说只有S3作为来源,但我没有对其进行测试(,所以我问transformation_ctx在ResolveChoice中是否无用(以及写入功能(,他们说是的!他们证实这没有任何区别。

此外,对于写入函数,它不会更改任何内容,因此没有书签逻辑,如果之前已经运行过,则没有"避免函数"。

最新更新