Azure Databricks의 데이터 소스로 Azure Blob Storage를 사용할 때 연결하는 방법

Azure Databricks에서 Azure Blob Storage 내의 데이터에 액세스할 때 어떻게 해야 하는지 알아보았는데 생각했던 것보다 복잡했기 때문에 정리해 둡니다.

기본적으로는 2종류가 있으며,
  • Databricks File System (DBFS)에 Blob Storage 마운트
  • Databricks 셀에 Blob Storage에 대한 액세스 키를 나열하고 연결합니다 (비보안).

    이번에는 전자에 대해 살펴 보겠습니다.

    다양한 리소스 만들기


  • Azure Storage account
  • Azure Databricks
  • Key Container: Databricks와 Blob Storage 간의 인증에 사용하는 KeyVault용

  • 이번은 Databricks 측에 시크릿의 스코프(키의 콜렉션)를 등록하는 것으로, Blob Storage와 접속합니다.

    먼저 Storage Account에 대한 액세스 키를 비밀로 KeyVault에 저장합니다. 만든 Storage Account에서 액세스 키로 이동하여 key1을 복사합니다.


    그런 다음 키를 키 컨테이너에 비밀로 배치합니다. 작성한 키 컨테이너에서 시크릿으로 이동하여 생성/가져오기를 선택합니다.

  • 업로드 옵션: 수동
  • 이름, 콘텐츠 형식: 선택
  • 값: 스토리지 계정 액세스 키

  • 를 설정하고 만듭니다.


    그런 다음 Databricks 측 설정으로 이동합니다.
    Azure Databricks instance의 개요에서 URL을 검토합니다.


    그 URL에 대해 다음과 같은 형태로 액세스합니다.
    https://<your_azure_databricks_url>#secrets/createScope
    

    키 컨테이너의 [속성]에서 다양한 값을 복사하여 설정합니다. Manage Principal은 Creator로 만들 때 오류가 발생했습니다.

    설정 후 [Create]합니다. 이렇게 하면 KeyVault가 Databricks의 Scope에 등록할 수 있었습니다.

    그런 다음 샘플 데이터를 Blob Storage 컨테이너에 업로드합니다. 여기에서 samplecontainer를 만들고 sales.txt를 업로드했습니다.


    마지막으로 Databricks의 노트북에서 연결을 확인합니다. 클러스터를 적절하게 작성하십시오. 노트북의 셀에 대해 다음 코드를 실행합니다.
    dbutils.fs.mount(
      source = "wasbs://<container-name>@<storage-account-name>.blob.core.windows.net",
      mount_point = "/mnt/<mount-name>",
      extra_configs = {"fs.azure.account.key.<storage-account-name>.blob.core.windows.net":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})
    

    mount 함수에 대해 True가 돌아오면 성공입니다. Cmd2 쪽에서는 내용의 확인을 하고 있습니다.


    참조

    좋은 웹페이지 즐겨찾기