在 ETL 任務中使用 MongoDB 連線 - AWS Glue

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 ETL 任務中使用 MongoDB 連線

您可以為 MongoDB 建立一個連線,然後在 AWS Glue 任務中使用該連線。如需詳細資訊,請參閱《AWS Glue 程式設計指南》中的 MongoDB 連線。連線 urlusernamepassword 儲存在 MongoDB 連線中。其他選項可以在 ETL 任務指令碼中使用 glueContext.getCatalogSourceadditionalOptions 參數指定。其他選項包括:

  • 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 資料庫中的資料表。如需詳細資訊,請參閱使用編目器填入資料目錄

  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. 隨需或透過觸發執行任務。