在 ETL 任务中使用 MongoDB 连接 - AWS Glue
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 ETL 任务中使用 MongoDB 连接

您可以为 MongoDB 创建连接,然后在 AWS Glue 作业中使用该连接。连接 urlusernamepassword 存储在 MongoDB 连接中。可以使用 additionalOptionsglueContext.getCatalogSource 参数在 ETL 作业脚本中指定其他选项。 其他选项可能包括:

  • database: (必需)要从中读取数据的 MongoDB 数据库。

  • collection: (必需)要从中读取数据的 MongoDB 集合。

通过将 databasecollection 信息放在 ETL 作业脚本中,您可以在多个作业中对 使用相同的连接。

  1. 为 AWS Glue 数据目录 数据源创建 MongoDB 连接。有关连接参数的说明,请参阅 "connectionType": "mongodb"。您可以使用控制台、APIs 或 CLI 创建连接。

  2. 在 AWS Glue 数据目录 中创建数据库来存储 MongoDB 数据的表定义。有关更多信息,请参阅 在数据目录中定义数据库

  3. 创建一个爬网程序,它使用连接中的信息爬取 MongoDB 中的数据以连接到 MongoDB。 爬网程序在 AWS Glue 数据目录 中创建描述您在作业中使用的 MongoDB 数据库中的表的表。有关更多信息,请参阅 定义爬网程序

  4. 使用自定义脚本创建作业。您可以使用控制台、APIs 或 CLI 创建作业。有关更多信息,请参阅在 AWS Glue 中添加作业

  5. 为您的作业选择数据目标。表示数据目标的表可以在 Data Catalog 中定义,或者您的作业可以在运行时创建目标表。在编写作业时,您会选择目标位置。如果目标需要连接,连接也会在您的作业中被引用。如果您的作业需要多个数据目标,您可以稍后通过编辑脚本来添加这些数据目标。

  6. 通过为作业和生成的脚本提供参数,自定义作业处理环境。

    下面是基于 DynamicFrame 中定义的表结构从 MongoDB 数据库创建 Data Catalog 的示例。该代码使用 additionalOptions 提供其他数据源信息:

    Scala
    val resultFrame: DynamicFrame = glueContext.getCatalogSource( database = catalogDB, tableName = catalogTable, additionalOptions = JsonOptions(Map("database" -> DATABASE_NAME, "collection" -> COLLECTION_NAME)) ).getDynamicFrame()
    Python
    glue_context.create_dynamic_frame_from_catalog( database = catalogDB, table_name = catalogTable, additional_options = {"database":"database_name", "collection":"collection_name"})
  7. 按需或通过触发器运行作业。