볼륨 만들기 및 작업

이 문서에서는 테이블 형식이 아닌 데이터 세트에 대한 거버넌스를 사용하도록 설정하는 Unity 카탈로그 개체인 볼륨을 소개합니다. 볼륨을 만들고, 관리하고, 작업하는 방법도 설명합니다.

볼륨의 파일 업로드 및 관리에 대한 자세한 내용은 Unity 카탈로그 볼륨에 파일 업로드 및 Unity 카탈로그 볼륨에 대한 파일 관리 작업을 참조하세요.

참고 항목

볼륨을 사용하는 경우 카탈로그 탐색기 같은 Azure Databricks UI를 사용하지 않는 한 SQL 웨어하우스 또는 Databricks Runtime 13.3 LTS 이상을 실행하는 클러스터를 사용해야 합니다.

Unity 카탈로그 볼륨이란?

볼륨은 클라우드 개체 스토리지 위치에 있는 스토리지의 논리적 볼륨을 나타내는 Unity 카탈로그 개체입니다. 볼륨은 파일 액세스, 저장, 관리 및 구성 기능을 제공합니다. 테이블은 테이블 형식 데이터 세트에 대한 거버넌스를 제공하지만 볼륨은 테이블 형식이 아닌 데이터 세트에 대한 거버넌스를 추가합니다. 볼륨을 사용하여 구조화, 반구조화 및 구조화되지 않은 데이터를 비롯한 모든 형식의 파일을 저장하고 액세스할 수 있습니다.

Important

볼륨을 테이블의 위치로 사용할 수 없습니다. 볼륨은 경로 기반 데이터 액세스 전용입니다. 테이블 형식 데이터를 Unity 카탈로그와 함께 저장하는 데 테이블을 사용합니다.

관리되는 볼륨이란?

관리되는 볼륨은 포함하는 스키마의 기본 스토리지 위치 내에서 만든 Unity 카탈로그 관리 스토리지 볼륨입니다. 관리 볼륨을 사용하면 외부 위치 및 스토리지 자격 증명의 오버헤드 없이 파일 작업을 위해 관리되는 스토리지를 만들 수 있습니다. 관리되는 볼륨을 만들 때 위치를 지정할 필요가 없으며, 관리되는 볼륨의 데이터에 대한 모든 파일 액세스는 Unity 카탈로그에서 관리하는 경로를 통해 수행됩니다. 볼륨의 파일에 액세스하는 데 사용되는 경로는 무엇인가요?

관리되는 볼륨을 삭제하면 이 볼륨에 저장된 파일도 30일 이내에 클라우드 테넌트에서 삭제됩니다.

외부 볼륨이란?

외부 볼륨은 Unity 카탈로그 관리 스토리지 자격 증명을 사용하여 외부 위치 내의 디렉터리에 대해 등록된 Unity 카탈로그 관리 스토리지 볼륨입니다. 외부 볼륨을 사용하면 기존 클라우드 개체 스토리지 디렉터리에 Unity 카탈로그 데이터 거버넌스를 추가할 수 있습니다. 외부 볼륨에 대한 일부 사용 사례는 다음과 같습니다.

  • 마이그레이션 없이 데이터 파일에 거버넌스 추가
  • Azure Databricks에서 수집하거나 액세스해야 하는 다른 시스템에서 생성된 파일 관리
  • 다른 시스템에서 클라우드 개체 스토리지에서 직접 액세스해야 하는 Azure Databricks에서 생성된 데이터를 제어합니다.

외부 볼륨은 Unity 카탈로그 스토리지 자격 증명이 관리하는 외부 위치 내의 디렉터리여야 합니다 . Unity 카탈로그는 외부 볼륨에 있는 파일의 수명 주기 또는 레이아웃을 관리하지 않습니다. 외부 볼륨을 삭제할 때 Unity 카탈로그는 기본 데이터를 삭제하지 않습니다.

참고 항목

볼륨을 정의할 때 볼륨 경로 아래의 데이터에 대한 클라우드 URI 액세스는 볼륨의 권한에 의해 제어됩니다.

볼륨의 파일에 액세스하는 데 사용되는 경로는 무엇인가요?

볼륨에 액세스하는 경로는 Apache Spark, SQL, Python 또는 다른 언어 및 라이브러리를 사용하는지 여부와 동일합니다. 이는 Azure Databricks 작업 영역에 바인딩된 개체 스토리지의 파일에 대한 레거시 액세스 패턴과 다릅니다.

볼륨의 파일에 액세스하는 경로는 다음 형식을 사용합니다.

/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

또한 Azure Databricks는 Apache Spark로 작업할 때 선택적 dbfs:/ 체계를 지원하므로 다음 경로도 작동합니다.

dbfs:/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

경로의 시퀀스는 /<catalog>/<schema>/<volume> 파일과 연결된 세 개의 Unity 카탈로그 개체 이름에 해당합니다. 이러한 경로 요소는 읽기 전용이며 사용자가 직접 쓸 수 없으므로 파일 시스템 작업을 사용하여 이러한 디렉터리를 만들거나 삭제할 수 없습니다. 자동으로 관리되고 해당 UC 엔터티와 동기화된 상태로 유지됩니다.

참고 항목

클라우드 스토리지 URI를 사용하여 외부 볼륨의 데이터에 액세스할 수도 있습니다.

볼륨에 대한 권한은 무엇인가요?

볼륨은 테이블과 동일한 기본 권한 모델을 사용하지만 테이블에 대한 권한은 테이블의 행 쿼리 및 조작에 대한 액세스 권한을 부여하는 데 중점을 두고 볼륨에 대한 권한은 파일 작업에 집중합니다. 따라서 볼륨에는 다음과 같은 권한이 도입됩니다.

Unity 카탈로그 권한 및 보안 개체를 참조하세요.

볼륨 권한을 관리할 수 있는 사람은 누구인가요?

볼륨 권한을 관리하거나 볼륨을 삭제하려면 볼륨에 대한 소유자 권한이 있어야 합니다. Unity 카탈로그의 각 개체에는 소유자로 할당된 보안 주체가 하나만 있을 수 있으며 소유권은 연속되지 않지만(즉, 카탈로그 소유자가 해당 카탈로그에 있는 모든 개체의 소유자가 되지는 않음) 소유권과 관련된 권한은 개체 내에 포함된 모든 개체에 적용됩니다.

즉, Unity 카탈로그 볼륨의 경우 다음 보안 주체가 볼륨 권한을 관리할 수 있습니다.

  • 부모 카탈로그의 소유자입니다.
  • 부모 스키마의 소유자입니다.
  • 볼륨의 소유자입니다.

각 개체에는 단일 소유자만 있을 수 있지만 Databricks는 개별 사용자가 아닌 그룹에 대부분의 개체에 대한 소유권을 할당하는 것이 좋습니다. 개체에 대한 초기 소유권은 해당 개체를 만드는 사용자에게 할당됩니다. Unity 카탈로그 개체 소유권 관리를 참조하세요.

관리되는 볼륨 만들기

관리되는 볼륨을 만들려면 다음 권한이 있어야 합니다.

리소스 필수 사용 권한
스키마 USE SCHEMA, CREATE VOLUME
카탈로그 USE CATALOG

Sql

관리되는 볼륨을 만들려면 다음 구문을 사용합니다.

CREATE VOLUME <catalog>.<schema>.<volume-name>;

카탈로그 탐색기

카탈로그 탐색기에서 관리되는 볼륨을 만들려면 다음을 수행합니다.

  1. Azure Databricks 작업 영역에서 카탈로그를 클릭합니다카탈로그 아이콘.
  2. 볼륨을 추가하려는 스키마를 검색하거나 찾아서 선택합니다.
  3. 볼륨 만들기 단추를 클릭합니다. (충분한 권한이 있어야 합니다.)
  4. 볼륨의 이름을 입력합니다.
  5. 주석을 제공합니다(선택 사항).
  6. 만들기를 클릭합니다.

외부 볼륨 만들기

외부 볼륨을 만들려면 다음 권한이 있어야 합니다.

리소스 필수 사용 권한
외부 위치 CREATE EXTERNAL VOLUME
스키마 USE SCHEMA, CREATE VOLUME
카탈로그 USE CATALOG

Sql

외부 볼륨을 만들려면 다음 구문을 사용하여 외부 위치 내의 경로를 지정합니다.

CREATE EXTERNAL VOLUME <catalog>.<schema>.<external-volume-name>
LOCATION 'abfss://<container-name>@<storage-account>.dfs.core.windows.net/<path>/<directory>';

카탈로그 탐색기

카탈로그 탐색기에서 외부 볼륨을 만들려면 다음을 수행합니다.

  1. Azure Databricks 작업 영역에서 카탈로그를 클릭합니다카탈로그 아이콘.
  2. 볼륨을 추가하려는 스키마를 검색하거나 찾아서 선택합니다.
  3. 볼륨 만들기 단추를 클릭합니다. (충분한 권한이 있어야 합니다.)
  4. 볼륨의 이름을 입력합니다.
  5. 볼륨을 만들 외부 위치를 선택합니다.
  6. 볼륨을 만들 하위 디렉터리를 반영하도록 경로를 편집합니다.
  7. 주석을 제공합니다(선택 사항).
  8. 만들기를 클릭합니다.

볼륨 삭제

소유자 권한이 있는 사용자만 볼륨을 삭제할 수 있습니다. 볼륨 권한을 관리할 수 있는 사용자를 참조 하세요.

볼륨을 삭제하려면 다음 구문을 사용합니다.

DROP VOLUME IF EXISTS <volume-name>;

관리되는 볼륨을 삭제하면 Azure Databricks는 30일 이내에 기본 데이터를 삭제합니다. 외부 볼륨을 삭제하면 Unity 카탈로그에서 볼륨을 제거하지만 내부 데이터는 외부 위치에서 변경되지 기본.

볼륨에서 파일 읽기

볼륨의 콘텐츠를 보거나 볼륨에 저장된 파일에 액세스하려면 다음 권한이 있어야 합니다.

리소스 필수 사용 권한
볼륨 READ
스키마 USE SCHEMA
카탈로그 USE CATALOG

경로를 사용하여 볼륨의 콘텐츠와 상호 작용합니다. 볼륨의 파일에 액세스하는 데 사용되는 경로는 무엇인가요?

볼륨에서 다른 파일 관리 작업 만들기, 삭제 및 수행

볼륨에 저장된 파일에 대해 파일 관리 작업을 수행하려면 다음 권한이 있어야 합니다.

리소스 필수 사용 권한
볼륨 READ, WRITE
스키마 USE SCHEMA
카탈로그 USE CATALOG

다음 도구를 사용하여 볼륨에서 파일 관리 작업을 수행할 수 있습니다.

  • 카탈로그 탐색기는 파일 관리 작업에 대한 많은 UI 옵션을 제공합니다. 카탈로그 탐색기란?을 참조하세요.
  • Databricks 유틸리티 fs 명령. 파일 시스템 유틸리티(dbutils.fs)를 참조하세요.
  • %fs 매직 명령은 .와 동일한 기능을 dbutils.fs제공합니다.
  • 볼륨 UI에 파일을 업로드합니다. Unity 카탈로그 볼륨에 파일 업로드를 참조 하세요.
  • 오픈 소스 명령(예: .)os.listdir()
  • 일부 bash 명령이 지원됩니다. %sh cp는 지원되지만, %sh mv는 지원되지 않습니다.

볼륨의 파일과 프로그래밍 방식으로 상호 작용하는 방법에 대한 자세한 내용은 Unity 카탈로그 볼륨의 파일 작업을 참조 하세요.

Notebook 예제: 볼륨 만들기 및 작업

다음 Notebook에서는 Unity 카탈로그 볼륨을 만들고 상호 작용하는 기본 SQL 구문을 보여 줍니다.

자습서: Unity 카탈로그 볼륨 Notebook

전자 필기장 가져오기

볼륨에 대한 예약된 경로

볼륨에는 볼륨에 액세스하는 데 사용되는 다음과 같은 예약된 경로가 도입됩니다.

  • dbfs:/Volumes
  • /Volumes

참고 항목

또한 경로는 Apache Spark API에서 이러한 경로에 대한 잠재적인 오타를 위해 예약되며 dbutilsdbfs:/앞에 오는지 여부에 관계없이 ,/volume/Volume를 포함합니다/volumes. 경로 /dbfs/Volumes 도 예약되어 있지만 볼륨에 액세스하는 데 사용할 수 없습니다.

볼륨은 Databricks Runtime 13.3 LTS 이상에서만 지원됩니다. Databricks Runtime 12.2 LTS 이하에서는 경로에 대한 /Volumes 작업이 성공할 수 있지만 예상대로 Unity 카탈로그 볼륨에 데이터를 유지하는 대신 컴퓨팅 클러스터에 연결된 임시 스토리지 디스크에 데이터를 쓸 수 있습니다.

Important

기존 데이터가 DBFS 루트의 예약된 경로에 저장된 경우 지원 티켓을 제출하여 이 데이터에 대한 임시 액세스 권한을 얻어 다른 위치로 이동할 수 있습니다.

제한 사항

Unity 카탈로그 사용 컴퓨팅을 사용하여 Unity 카탈로그 볼륨과 상호 작용해야 합니다. 볼륨은 모든 워크로드를 지원하지 않습니다.

참고 항목

볼륨은 실행기에 분산된 명령을 지원하지 dbutils.fs 않습니다.

다음과 같은 제한 사항이 적용됩니다.

Databricks Runtime 14.3 LTS 이상에서:

  • 단일 사용자 클러스터에서는 Scala의 스레드 및 하위 프로세스에서 볼륨에 액세스할 수 없습니다.

Databricks Runtime 14.2 이하:

  • 공유 액세스 모드로 구성된 컴퓨팅에서는 UDF를 사용하여 볼륨에 액세스할 수 없습니다.
    • Python 또는 Scala는 모두 드라이버에서 FUSE에 액세스할 수 있지만 실행기는 액세스할 수 없습니다.
    • I/O 작업을 수행하는 Scala 코드는 드라이버에서 실행할 수 있지만 실행기는 실행할 수 없습니다.
  • 단일 사용자 액세스 모드로 구성된 컴퓨팅에서는 Scala, 볼륨 경로를 사용하여 데이터에 액세스하는 Scala IO 코드 또는 Scala UDF에서 FUSE를 지원하지 않습니다. Python UDF는 단일 사용자 액세스 모드에서 지원됩니다.

지원되는 모든 Databricks 런타임 버전에서:

  • Unity 카탈로그 UDF는 볼륨 파일 경로 액세스를 지원하지 않습니다.

  • RDD에서 볼륨에 액세스할 수 없습니다.

  • 볼륨에 저장된 JAR에서는 spark-submit을 사용할 수 없습니다.

  • Wheel 또는 JAR 파일 내의 볼륨 경로를 통해 액세스하는 다른 라이브러리에 대한 종속성을 정의할 수 없습니다.

  • 또는 /Volumes/<catalog-name>/<schema-name> 패턴을 사용하여 Unity 카탈로그 개체를 나열할 /Volumes/<catalog-name> 수 없습니다. 볼륨 이름을 포함하는 정규화된 경로를 사용해야 합니다.

  • REST API에 대한 DBFS 엔드포인트는 볼륨 경로를 지원하지 않습니다.

  • 볼륨은 Azure Databricks 작업 영역의 전역 검색 결과에서 제외됩니다.

  • 볼륨을 클러스터 로그 배달의 대상으로 지정할 수 없습니다.

  • %sh mv 는 볼륨 간에 파일을 이동하는 데 지원되지 않습니다. 대신 dbutils.fs.mv 또는 %sh cp를 사용하십시오.

  • 볼륨이 있는 사용자 지정 Hadoop 파일 시스템을 만들 수 없습니다. 즉, 다음이 지원되지 않습니다.

    import org.apache.hadoop.fs.Path
    val path =  new Path("dbfs:/Volumes/main/default/test-volume/file.txt")
    val fs = path.getFileSystem(sc.hadoopConfiguration)
    fs.listStatus(path)
    
  • 볼륨은 FedRAMP 규정 준수를 사용하는 Azure Government 지역 또는 작업 영역에서 사용할 수 없습니다.

  • Azure Data Factory 라이브러리 구성 패널에서 스키마와 함께 dbfs:/ 경로 형식을 사용해야 합니다. 예들 들어 dbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/file입니다.