다음을 통해 공유


Unity 카탈로그 볼륨이란?

볼륨은 테이블 형식이 아닌 데이터 세트에 대한 거버넌스를 사용하도록 설정하는 Unity 카탈로그 개체입니다. 볼륨은 클라우드 개체 스토리지 위치에 있는 스토리지의 논리적 볼륨을 나타냅니다. 볼륨은 파일 액세스, 저장, 관리 및 구성 기능을 제공합니다.

테이블은 테이블 형식 데이터 세트에 대한 거버넌스를 제공하지만 볼륨은 테이블 형식이 아닌 데이터 세트에 대한 거버넌스를 추가합니다. 볼륨을 사용하여 구조화, 반구조화 및 구조화되지 않은 데이터를 비롯한 모든 형식의 파일을 저장하고 액세스할 수 있습니다.

Databricks는 볼륨을 사용하여 테이블 형식이 아닌 모든 데이터에 대한 액세스를 제어하는 것이 좋습니다. 테이블과 마찬가지로 볼륨을 관리하거나 외부로 관리할 수 있습니다.

Important

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

다음 문서에서는 볼륨 작업에 대한 자세한 정보를 제공합니다.

참고 항목

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

관리되는 볼륨이란?

관리되는 볼륨은 포함하는 스키마의 관리되는 스토리지 위치 내에서 만든 Unity 카탈로그 관리 스토리지 볼륨입니다. Unity 카탈로그에서 관리되는 스토리지 위치 지정을 참조하세요.

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

외부 볼륨이란?

외부 볼륨은 Unity 카탈로그 관리 스토리지 자격 증명을 사용하여 외부 위치 내의 디렉터리에 대해 등록된 Unity 카탈로그 관리 스토리지 볼륨입니다.

Unity 카탈로그는 외부 볼륨에 있는 파일의 수명 주기 및 레이아웃을 관리하지 않습니다. 외부 볼륨을 삭제할 때 Unity 카탈로그는 기본 데이터를 삭제하지 않습니다.

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

볼륨은 Unity 카탈로그 3 수준 네임스페이스의 세 번째 수준에 있습니다(catalog.schema.volume

볼륨에 초점을 맞춘 Unity 카탈로그 개체 모델 다이어그램

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

참고 항목

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

볼륨에 대한 예약된 경로

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

  • dbfs:/Volumes
  • /Volumes

참고 항목

또한 경로는 Apache Spark API에서 이러한 경로에 대한 잠재적인 오타를 위해 예약되며 dbutils/volumes앞에 오는지 여부에 관계없이 ,/Volume/volume를 포함합니다dbfs:/. 경로 /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을 사용할 수 없습니다.

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

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

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

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

  • %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입니다.