다음을 통해 공유


방법: Lakehouse에서 미러 Azure Cosmos DB 데이터 및 Microsoft Fabric에서 Notebook에 액세스(미리 보기)

이 가이드에서는 Lakehouse에서 미러 Azure Cosmos DB 데이터에 액세스하고 Microsoft Fabric(미리 보기)의 Notebook에 액세스하는 방법을 알아봅니다.

Important

Azure Cosmos DB에 대한 미러링이 현재 미리 보기로 제공됩니다. 프로덕션 워크로드는 미리 보기 중에 지원되지 않습니다. 현재 NoSQL용 Azure Cosmos DB 계정만 지원됩니다.

필수 조건

공개 미리 보기 중에는 백업에서 신속하게 복구할 수 있는 기존 Azure Cosmos DB 데이터의 테스트 또는 개발 복사본을 사용하는 것이 좋습니다.

미러 설정 및 필수 구성 요소

Azure Cosmos DB for NoSQL 데이터베이스에 대한 미러 구성합니다. 미러 구성하는 방법을 잘 모르는 경우 미러 데이터베이스 구성 자습서를 참조하세요.

  1. 패브릭 포털이동합니다.

  2. Azure Cosmos DB 계정의 자격 증명을 사용하여 새 연결 및 미러 데이터베이스를 만듭니다.

  3. 복제본(replica) 데이터의 초기 스냅샷 완료할 때까지 기다립니다.

Lakehouse 및 Notebook에서 미러 데이터 액세스

Lakehouse를 사용하여 Azure Cosmos DB for NoSQL 미러 데이터를 분석하는 데 사용할 수 있는 도구 수를 더 확장할 수 있습니다. 여기서는 Lakehouse를 사용하여 Spark Notebook을 빌드하여 데이터를 쿼리합니다.

  1. 패브릭 포털 홈으로 다시 이동합니다.

  2. 탐색 메뉴에서 만들기를 선택합니다.

  3. 만들기를 선택하고 데이터 엔지니어 섹션을 찾은 다음 Lakehouse 선택합니다.

  4. Lakehouse의 이름을 입력한 다음 만들기를 선택합니다.

  5. 이제 데이터 가져오기를 선택한 다음 새 바로 가기를 선택합니다. 바로 가기 옵션 목록에서 Microsoft OneLake를 선택합니다.

  6. Fabric 작업 영역의 미러 데이터베이스 목록에서 미러 Azure Cosmos DB for NoSQL 데이터베이스를 선택합니다. Lakehouse에서 사용할 테이블을 선택하고 다음을 선택한 다음 만들기를 선택합니다.

  7. Lakehouse에서 테이블의 상황에 맞는 메뉴를 열고 새로 만들기 또는 기존 전자 필기장을 선택합니다.

  8. 새 Notebook이 자동으로 열리고 다음을 사용하여 SELECT LIMIT 1000데이터 프레임을 로드합니다.

  9. Spark 사용과 같은 SELECT * 쿼리를 실행합니다.

    df = spark.sql("SELECT * FROM Lakehouse.OrdersDB_customers LIMIT 1000")
    display(df)
    

    미러 데이터베이스에서 데이터가 미리 로드된 Lakehouse Notebook의 스크린샷

    참고 항목

    이 예제에서는 테이블의 이름을 가정합니다. Spark 쿼리를 작성할 때 사용자 고유의 테이블을 사용합니다.

Spark를 사용하여 쓰기 저장

마지막으로 Spark 및 Python 코드를 사용하여 Fabric의 Notebooks에서 원본 Azure Cosmos DB 계정에 데이터를 다시 쓸 수 있습니다. 이 작업을 수행하여 분석 결과를 Cosmos DB에 다시 쓰고 OLTP 애플리케이션에 대한 서비스 평면으로 사용할 수 있습니다.

  1. Notebook 내에 4개의 코드 셀을 만듭니다.

  2. 먼저 미러 데이터를 쿼리합니다.

    fMirror = spark.sql("SELECT * FROM Lakehouse1.OrdersDB_ordercatalog")
    

    이러한 샘플 코드 블록의 테이블 이름은 특정 데이터 스키마를 가정합니다. 이를 사용자 고유의 테이블 및 열 이름으로 자유롭게 바꿀 수 있습니다.

  3. 이제 데이터를 변환하고 집계합니다.

    dfCDB = dfMirror.filter(dfMirror.categoryId.isNotNull()).groupBy("categoryId").agg(max("price").alias("max_price"), max("id").alias("id"))
    
  4. 다음으로 자격 증명, 데이터베이스 이름 및 컨테이너 이름을 사용하여 NoSQL용 Azure Cosmos DB 계정에 다시 쓰도록 Spark를 구성합니다.

    writeConfig = {
      "spark.cosmos.accountEndpoint" : "https://xxxx.documents.azure.com:443/",
      "spark.cosmos.accountKey" : "xxxx",
      "spark.cosmos.database" : "xxxx",
      "spark.cosmos.container" : "xxxx"
    }
    
  5. 마지막으로 Spark를 사용하여 원본 데이터베이스에 다시 씁니다.

    dfCDB.write.mode("APPEND").format("cosmos.oltp").options(**writeConfig).save()
    
  6. 모든 코드 셀을 실행합니다.

    Important

    Azure Cosmos DB에 쓰기 작업은 RU(요청 단위)를 사용합니다.