이 페이지에는 다양한 사용자 인터페이스, 도구, 라이브러리 및 언어에 대한 Unity 카탈로그 볼륨 의 파일을 관리하는 예제가 있습니다.
Databricks는 클라우드 개체 스토리지의 테이블 형식이 아닌 데이터에 대한 모든 액세스를 관리하고 워크로드 지원 파일을 저장하기 위해 볼륨을 사용하는 것이 좋습니다. 예를 들면 다음과 같습니다.
- 수집을 위한 데이터 파일(예: CSV, JSON 및 Parquet)
- 데이터 과학, ML 및 AI 워크로드를 위한 텍스트, 이미지 및 오디오 파일
- 외부 시스템과 통합하기 위해 Azure Databricks에서 작성한 CSV 또는 JSON 아티팩트
- 라이브러리, 초기화 스크립트 및 빌드 아티팩트
볼륨은 FUSE(사용자 영역 파일 시스템) 종속 도구 및 프레임워크와 함께 작동하는 POSIX(이식 가능한 운영 체제 인터페이스) 스타일 경로를 제공합니다. 따라서 POSIX 스타일 액세스가 필요한 기계 학습 프레임워크 및 오픈 소스 Python 모듈에 적합합니다. URI 체계, POSIX 경로 및 볼륨과 관련된 방법에 대한 자세한 내용은 데이터에 액세스하기 위해 URI 체계를 제공해야 하나요?를 참조하세요.
볼륨의 파일을 관리하는 방법
각 메서드의 빠른 예제는 Unity 카탈로그 볼륨의 파일 작업(Work with Files)을 참조하세요.
| 인터페이스 | Description |
|---|---|
| 카탈로그 탐색기 UI | Azure Databricks 작업 영역을 통한 대화형 파일 관리 |
| 프로그래밍 방식 액세스 | Apache Spark, Pandas 또는 SQL을 사용하여 파일 읽기 및 쓰기 |
| Databricks 유틸리티 | Notebook에서 파일 작업은 dbutils.fs 또는 매직 명령(%fs, %sh) 사용할 때 수행됩니다. |
| SQL 명령 | SQL 키워드(LIST, PUT INTO, ,GETREMOVE) 및 커넥터를 사용하는 파일 작업 |
| Databricks CLI |
databricks fs 명령을 사용한 명령줄 작업 |
| SDK | Python, Java 또는 Go SDK를 사용하는 파일 작업 |
| REST API | 사용자 지정 통합을 위한 직접 API 액세스 |
카탈로그 탐색기 사용
카탈로그 탐색기에는 Unity 카탈로그 볼륨으로 저장된 파일에 대한 일반적인 파일 관리 작업에 대한 옵션이 있습니다.
볼륨의 파일과 상호 작용하려면 다음을 수행합니다.
- Azure Databricks 작업 영역에서
을 클릭합니다.카탈로그.
- 작업하려는 볼륨을 검색하거나 찾아서 선택하세요.
볼륨을 만들고 관리하는 방법에 대한 자세한 내용은 Unity 카탈로그 볼륨 만들기 및 관리를 참조하세요.
볼륨에 파일 업로드
구조화, 반구조화 또는 구조화되지 않은 형식의 파일을 볼륨에 업로드할 수 있습니다. UI를 통해 업로드하는 경우 파일 크기 제한은 5GB입니다. 그러나 볼륨 자체는 기본 클라우드 스토리지에서 지원하는 최대 크기까지 파일을 지원합니다. Spark를 사용하여 매우 큰 파일을 작성하고 Azure Databricks API 또는 SDK를 사용하여 큰 파일을 업로드할 수 있습니다.
요구 사항
볼륨에 업로드하기 전에 다음이 있는지 확인합니다.
- Unity 카탈로그를 사용하도록 설정된 작업 영역
-
WRITE VOLUME대상 볼륨에서 -
USE SCHEMA부모 스키마에서 -
USE CATALOG부모 카탈로그에
자세한 내용은 Unity 카탈로그 권한 및 보안 개체를 참조하세요.
업로드 단계
- 카탈로그 탐색기에서볼륨에> 업로드 추가를 클릭합니다.
- 찾아보기를 클릭하거나 드롭 영역에 파일을 드롭하세요.
- 볼륨 또는 디렉터리를 선택하거나 볼륨 경로를 붙여넣습니다.
- 대상 스키마에 볼륨이 없으면 볼륨을 만듭니다.
- 대상 볼륨 내에 새 디렉터리를 만들 수도 있습니다.
다음과 같은 방법으로 업로드 UI에 액세스할 수도 있습니다.
- 사이드바에서: 새로>데이터 추가>볼륨에 파일 업로드
- Notebook에서: 파일>파일을 볼륨에 업로드
다음 단계
볼륨에 업로드한 후 다음을 수행할 수 있습니다.
- 파일에서 Unity 카탈로그 관리 테이블을 만듭니다. 볼륨의 데이터에서 테이블 만들기를 참조하세요.
- ML 및 데이터 과학 워크로드에서 파일 사용
- 업로드한 파일을 사용하여 클러스터 라이브러리, Notebook 범위 라이브러리 또는 작업 종속성을 구성합니다.
- 자동 로더를 사용하여 엔지니어링 파이프라인을 위한 데이터를 수집하거나COPY INTO
- 다음과 같은 AI 함수를 사용하여 파일 처리
ai_parse_document - 작업에서 파일 도착 트리거 설정
- AgentBricks와 함께 사용할 문서 업로드(예: 기술 도우미 시나리오)
볼륨에서 파일 다운로드
볼륨에서 파일을 다운로드하려면 다음을 수행합니다.
- 하나 이상의 파일을 선택합니다.
- 다운로드를 클릭하여 이러한 파일을 다운로드합니다.
볼륨에서 파일 삭제
볼륨에서 파일을 삭제하려면 다음을 수행합니다.
- 하나 이상의 파일을 선택합니다.
- 삭제를 클릭합니다.
- 삭제를 클릭하여 표시되는 대화 상자에서 확인합니다.
빈 디렉터리 만들기
볼륨에 새 디렉터리를 만들려면 다음을 수행합니다.
- 볼륨 개요 탭에서 디렉터리 만들기를 클릭합니다.
- 디렉터리 이름을 입력합니다.
- 만들기를 클릭합니다.
디렉터리 다운로드
볼륨에서 디렉터리를 다운로드하려면 다음을 수행합니다.
-
을 클릭합니다. 디렉터리 오른쪽에 있는 kebab 메뉴입니다.
- 디렉터리 다운로드를 클릭합니다.
디렉터리가 ZIP 파일로 다운로드됩니다.
볼륨에서 디렉터리 삭제
볼륨에서 디렉터리를 삭제하려면 다음을 수행합니다.
- 하나 이상의 디렉터리를 선택합니다.
- 삭제를 클릭합니다.
- 삭제를 클릭하여 표시되는 대화 상자에서 확인합니다.
볼륨에 대한 UI 파일 관리 작업
케밥 메뉴 을 클릭합니다. 파일 이름 옆에 있는 다음 작업을 수행합니다.
- 경로 복사
- 파일 다운로드
- 파일 삭제
- 테이블 만들기
볼륨의 데이터에서 테이블 만들기
Azure Databricks는 Unity 카탈로그 볼륨에 저장된 파일, 여러 파일 또는 파일 디렉터리에서 Unity 카탈로그 관리 테이블을 만드는 UI를 제공합니다.
대상 스키마에 CREATE TABLE 권한이 있어야 하며 실행 중인 SQL 웨어하우스에 액세스할 수 있어야 합니다.
하나 이상의 파일 또는 디렉터리를 선택합니다. 파일에는 동일한 데이터 레이아웃이 있어야 합니다.
테이블 만들기을 클릭합니다. 볼륨에서 테이블 만들기 대화 상자가 나타납니다.
제공된 대화 상자를 사용하여 데이터의 미리 보기를 검토하고 다음 구성을 완료합니다.
- 새 테이블 만들기
선택하거나 기존 테이블 덮어쓰기를 선택합니다. - 대상 카탈로그 및 스키마를 선택합니다.
- 테이블 이름을 지정합니다.
- (선택 사항) 기본 열 이름 및 형식을 재정의하거나 열을 제외하도록 선택합니다.
비고
고급 특성을 클릭하여 추가 옵션을 봅니다.
- 새 테이블 만들기
테이블 만들기를 클릭하여 지정된 특성을 사용하여 테이블을 만듭니다. 완료되면 카탈로그 탐색기에 테이블 세부 정보가 표시됩니다.
프로그래밍으로 디스크 볼륨 내 파일 작업하기
다음 형식을 사용하여 지원되는 모든 언어 및 작업 영역 편집기에서 볼륨으로 파일을 읽고 씁니다.
/Volumes/catalog_name/schema_name/volume_name/path/to/files
모든 클라우드 개체 스토리지 위치의 파일과 상호 작용하는 것과 동일한 방식으로 볼륨의 파일과 상호 작용합니다. 즉, 현재 클라우드 URI, DBFS 탑재 경로 또는 DBFS 루트 경로를 사용하여 데이터 또는 파일과 상호 작용하는 코드를 관리하는 경우 대신 볼륨을 사용하도록 코드를 업데이트할 수 있습니다.
비고
볼륨은 테이블 형식이 아닌 데이터에만 사용됩니다. Databricks는 Unity 카탈로그 테이블을 사용하여 테이블 형식 데이터를 등록한 다음 테이블 이름을 사용하여 데이터를 읽고 쓰는 것이 좋습니다.
볼륨에서 데이터 읽기 및 쓰기
Apache Spark, pandas, Spark SQL 및 기타 OSS 라이브러리를 사용하여 볼륨에서 데이터 파일을 읽고 씁니다.
다음 예제에서는 볼륨에 저장된 CSV 파일을 읽는 방법을 보여 줍니다.
파이썬
df = spark.read.format("csv").load("/Volumes/catalog_name/schema_name/volume_name/data.csv")
display(df)
Pandas
import pandas as pd
df = pd.read_csv('/Volumes/catalog_name/schema_name/volume_name/data.csv')
display(df)
SQL
SELECT * FROM csv.`/Volumes/catalog_name/schema_name/volume_name/data.csv`
볼륨의 파일에 대한 유틸리티 명령
Databricks는 볼륨에서 파일을 관리하기 위한 다음 도구를 제공합니다.
-
dbutils.fsDatabricks 유틸리티의 하위 코드입니다. 파일 시스템 유틸리티(dbutils.fs)를 참조하세요. -
%fs에 대한dbutils.fs별칭인 마법입니다. - 볼륨에 대한 bash 명령을 허용하는
%sh매직입니다.
이러한 도구를 사용하여 인터넷에서 파일을 다운로드하고, 파일의 압축을 풀고, 임시 블록 스토리지에서 볼륨으로 파일을 이동하는 예제는 인터넷데이터 다운로드를 참조하세요.
다음 예제와 같이 Python os 모듈과 같은 파일 유틸리티 명령에 OSS 패키지를 사용할 수도 있습니다.
import os
os.mkdir('/Volumes/catalog_name/schema_name/volume_name/directory_name')
외부 도구에서 볼륨 파일 관리
Databricks는 로컬 환경 또는 통합 시스템에서 볼륨의 파일을 프로그래밍 방식으로 관리하기 위한 도구 모음을 제공합니다.
볼륨의 파일에 대한 SQL 명령
Azure Databricks는 볼륨의 파일과 상호 작용하기 위해 다음 SQL 키워드를 지원합니다.
Azure Databricks Notebook 및 SQL 쿼리 편집기에서는 명령만 LIST 지원됩니다. 다른 SQL 명령(PUT INTOGET및REMOVE)은 볼륨에서 파일 관리를 지원하는 다음 Databricks SQL 커넥터 및 드라이버를 통해 사용할 수 있습니다.
- Python용 Databricks SQL Connector
- Databricks SQL Driver for Go
- databricks SQL Driver for Node.js
- Databricks JDBC 드라이버
- Databricks ODBC 드라이버
Databricks CLI를 사용하여 볼륨의 파일 관리
하위 명령을 databricks fs에서 사용합니다. 명령 그룹을 참조하세요fs.
비고
Databricks CLI를 사용하려면 모든 볼륨 경로 앞에 스키마 dbfs:/ 필요합니다. 예: dbfs:/Volumes/catalog_name/schema_name/volume_name/path/to/data.
SDK를 사용하여 볼륨의 파일 관리
다음 SDK는 볼륨의 파일 관리를 지원합니다.
- Python용 Databricks SDK입니다. WorkspaceClient.files에서 사용 가능한 메서드를 사용합니다. 예제는 Unity 카탈로그 볼륨파일 관리를 참조하세요.
- Java용 Databricks SDK입니다. WorkspaceClient.files에서 사용 가능한 메서드를 사용합니다. 예제는 Unity 카탈로그 볼륨파일 관리를 참조하세요.
- Go용 Databricks SDK입니다. WorkspaceClient.files에서 사용 가능한 메서드를 사용합니다. 예제는 Unity 카탈로그 볼륨파일 관리를 참조하세요.
REST API를 사용하여 볼륨의 파일 관리
파일 API를 사용하여 볼륨의 파일을 관리합니다.
볼륨의 파일에 대한 REST API 예제
다음 예제에서는 curl 및 Databricks REST API를 사용하여 볼륨에서 파일 관리 작업을 수행합니다.
다음 예제에서는 지정된 볼륨에 명명 my-folder 된 빈 폴더를 만듭니다.
curl --request PUT "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/my-folder/" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"
다음 예제에서는 볼륨의 지정된 경로에 지정된 데이터를 사용하여 명명 data.csv 된 파일을 만듭니다.
curl --request PUT "https://${DATABRICKS_HOST}/api/2.0/fs/files/Volumes/main/default/my-volume/my-folder/data.csv?overwrite=true" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" \
--header "Content-Type: application/octet-stream" \
--data-binary $'id,Text\n1,Hello World!'
다음 예제에서는 지정된 경로에 있는 볼륨의 내용을 나열합니다. 이 예제에서는 jq 를 사용하여 더 쉽게 읽을 수 있도록 응답 본문의 JSON 형식을 지정합니다.
curl --request GET "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq .
다음 예제에서는 지정된 경로의 볼륨에 있는 폴더의 내용을 나열합니다. 이 예제에서는 jq 를 사용하여 더 쉽게 읽을 수 있도록 응답 본문의 JSON 형식을 지정합니다.
curl --request GET "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/my-folder" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq .
다음은 볼륨의 지정된 경로에 있는 파일의 내용을 인쇄하는 예제입니다.
curl --request GET "https://${DATABRICKS_HOST}/api/2.0/fs/files/Volumes/main/default/my-volume/my-folder/data.csv" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"
다음 예제에서는 볼륨에서 지정된 경로의 파일을 삭제합니다.
curl --request DELETE "https://${DATABRICKS_HOST}/api/2.0/fs/files/Volumes/main/default/my-volume/my-folder/data.csv" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"
다음 예제에서는 지정된 볼륨에서 폴더를 삭제합니다.
curl --request DELETE "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/my-folder/" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"
볼륨의 파일 작업 제한 사항
볼륨의 파일을 사용하기 전에 다음 제한 사항을 고려하세요.
직접 추가 또는 비순차적(임의) 쓰기는 지원되지 않습니다. 이는 Zip 및 Excel 파일 작성과 같은 작업에 영향을 줍니다. 이러한 워크로드의 경우:
- 먼저 로컬 디스크에서 작업 수행
- 볼륨에 결과 복사
다음은 그 예입니다.
# python import xlsxwriter from shutil import copyfile workbook = xlsxwriter.Workbook('/local_disk0/tmp/excel.xlsx') worksheet = workbook.add_worksheet() worksheet.write(0, 0, "Key") worksheet.write(0, 1, "Value") workbook.close() copyfile('/local_disk0/tmp/excel.xlsx', '/Volumes/my_catalog/my_schema/my_volume/excel.xlsx')스파스 파일은 지원되지 않습니다. 스파스 파일을 복사하려면 다음을 사용합니다
cp --sparse=never.$ cp sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file error writing '/dbfs/sparse.file': Operation not supported $ cp --sparse=never sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file