ETL 작업의 MondoDB 연결 작업 - AWS Glue

ETL 작업의 MondoDB 연결 작업

MongoDB 연결을 생성한 다음 해당 연결을 AWS Glue 작업에서 사용하면 됩니다. 연결 url, usernamepassword는 MongoDB 연결에 저장됩니다. 다른 옵션은 glueContext.getCatalogSourceadditionalOptions 파라미터를 사용하여 ETL 작업 스크립트에서 지정하면 됩니다. 이외 옵션으로 다음과 같은 항목이 포함됩니다.

  • database: (필수 사항) 읽을 소스 MongoDB 데이터베이스입니다.

  • collection: (필수 사항) 읽을 소스 MongoDB 컬렉션입니다.

ETL 작업 스크립트 내에 databasecollection 정보를 배치하면 여러 작업에 같은 조건을 사용할 수 있습니다.

  1. MongoDB 데이터 원본에 대해 AWS Glue Data Catalog 연결을 생성합니다. 연결 파라미터에 대한 설명은 "connectionType": "mongodb"를 참조하세요. 연결은 콘솔, API 또는 CLI를 사용해 생성하면 됩니다.

  2. AWS Glue Data Catalog에 데이터베이스를 생성하여 여기에 MongoDB 데이터의 테이블 정의를 저장합니다. 자세한 정보는 AWS Glue 데이터베이스 섹션을 참조하세요.

  3. MongoDB로 연결되는 연결의 정보를 사용해 MongoDB의 데이터를 크롤링하는 크롤러를 생성합니다. 이 크롤러가 AWS Glue Data Catalog에 테이블을 생성하며 이것이 작업에서 사용하는 MongoDB 데이터베이스 내 테이블을 설명합니다. 자세한 정보는 AWS Glue에서 크롤러 정의 섹션을 참조하세요.

  4. 사용자 정의 스크립트를 사용하여 작업을 생성합니다. 작업은 콘솔, API 또는 CLI를 사용해 생성하면 됩니다. 자세한 내용은 AWS Glue의 작업 추가를 참조하십시오.

  5. 작업의 데이터 대상을 선택합니다. 데이터 대상을 나타내는 테이블은 Data Catalog에서 정의할 수 있고, 아니면 작업이 실행될 때 대상 테이블을 생성할 수도 있습니다. 작업을 작성하면 대상 위치를 선택합니다. 대상에 연결이 요구되면, 연결도 작업에서 참조됩니다. 작업이 여러 데이터 대상이 필요하다면 나중에 스크립트를 편집하여 추가할 수 있습니다.

  6. 작업과 생성된 스크립트의 인수를 제공하여 작업 처리 환경을 사용자 지정합니다.

    다음은 Data Catalog에서 정의한 테이블 구조를 기반으로 한 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. 작업을 실행합니다. 온디맨드여도 되고, 트리거를 통해도 됩니다.