在 ETL 作业中使用 MongoDB 连接 - AWS Glue

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

在 ETL 作业中使用 MongoDB 连接

您可以为 MongoDB 创建连接,然后在 AWS Glue 任务中使用该连接。有关更多信息,请参阅 AWS Glue 编程指南中的 MongoDB 连接。连接 urlusernamepassword 存储在 MongoDB 连接中。其他选项可以在 ETL 任务脚本中使用additionalOptions 参数 glueContext.getCatalogSource 指定。其他选项可包括:

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

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

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

  1. 为 MongoDB 数据源创建一个 AWS Glue Data Catalog 连接。请参阅“connectionType”:“mongodb”以获取连接参数的说明。您可以使用控制台、API 或 CLI 创建此连接。

  2. 在 AWS Glue Data Catalog 中创建数据库以存储 MongoDB 数据的表定义。请参阅创建数据库了解更多信息。

  3. 创建一个爬网程序,使用连接到 MongoDB 的连接中的信息对 MongoDB 中的数据进行爬网。该爬网程序将在 AWS Glue Data Catalog 中创建表,这些表描述您在任务中使用的 MongoDB 数据库中的表。请参阅使用爬网程序填充 Data Catalog 了解更多信息。

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

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

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

    以下是一个基于数据目录中定义的表结构,从 MongoDB 数据库创建 DynamicFrame 的示例。该代码使用 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. 按需运行任务或通过触发器运行任务。