다음을 통해 공유


프로그래밍 방식으로 작업 영역 파일과 상호 작용

프로그래밍 방식으로 Azure Databricks에 저장된 작업 영역 파일과 상호 작용할 수 있습니다. 이를 통해 다음과 같은 작업을 수행할 수 있습니다.

  • Notebook 및 코드와 함께 작은 데이터 파일 저장.
  • Git과 동기화된 디렉터리에 로그 파일을 작성합니다.
  • 상대 경로를 사용하여 모듈을 가져옵니다.
  • 환경 사양 파일 만들기 또는 수정.
  • Notebook에서 출력을 작성합니다.
  • Tensorboard와 같은 라이브러리 실행에서 출력을 작성합니다.

Databricks Runtime 11.3 LTS 이상에서 프로그래밍 방식으로 작업 영역 파일을 만들고, 편집하고, 삭제할 수 있습니다.

참고 항목

작업 영역 파일에 대한 쓰기를 사용하지 않으려면 클러스터 환경 변수 WSFS_ENABLE_WRITE_SUPPORT=false를 설정합니다. 자세한 내용은 환경 변수를 참조하세요.

참고 항목

Databricks Runtime 14.0 이상에서 로컬로 실행되는 코드의 기본 CWD(현재 작업 디렉터리)는 실행 중인 Notebook 또는 스크립트가 포함된 디렉터리입니다. 이는 Databricks Runtime 13.3 LTS 이하의 동작 변경입니다. 기본 현재 작업 디렉터리가란?을 참조하세요.

파일의 위치 읽기

셸 명령을 사용하여 리포지토리 또는 로컬 파일 시스템의 파일 위치를 읽습니다.

파일의 위치를 확인하려면 다음을 입력합니다.

%sh ls
  • 파일이 리포지토리 에 없습니다. 명령은 파일 시스템을 /databricks/driver반환합니다.
  • 파일이 리포지토리에 있습니다. 명령은 .와 같은 가상화된 리포지토리를 /Workspace/Repos/name@domain.com/public_repo_2/repos_file_system반환합니다.

데이터 작업 영역 파일 읽기

Notebook의 코드에서 .csv 또는 .json 파일과 같은 작은 데이터 파일을 프로그래밍 방식으로 읽을 수 있습니다. 다음 예제에서는 Pandas를 사용하여 프로젝트 리포지토리의 루트를 기준으로 /data 디렉터리에 저장된 파일을 쿼리합니다.

import pandas as pd
df = pd.read_csv("./data/winequality-red.csv")
df

Spark를 사용하여 데이터 파일을 읽을 수 있습니다. Spark에 정규화된 경로를 제공해야 합니다.

  • Git 폴더의 작업 영역 파일은 경로를 file:/Workspace/Repos/<user-folder>/<repo-name>/path/to/file사용합니다.
  • 개인 디렉터리의 작업 영역 파일은 다음 경로를 file:/Workspace/Users/<user-folder>/path/to/file사용합니다.

파일 옆에 있는 드롭다운 메뉴에서 파일에 대한 절대 또는 상대 경로를 복사할 수 있습니다.

파일 드롭다운 메뉴

아래 예제는 {os.getcwd()}를 사용하여 전체 경로를 가져오는 방법을 보여 줍니다.

import os
spark.read.format("csv").load(f"file:{os.getcwd()}/my_data.csv")

Azure Databricks의 파일에 대한 자세한 내용은 Azure Databricks의 파일 작업을 참조 하세요.

프로그래밍 방식으로 파일 및 디렉터리 만들기, 업데이트 및 삭제

Databricks Runtime 11.3 LTS 이상에서는 Azure Databricks에서 작업 영역 파일을 직접 조작할 수 있습니다. 다음 예제에서는 표준 Python 패키지 및 기능을 사용하여 파일 및 디렉터리를 만들고 조작합니다.

# Create a new directory

os.mkdir('dir1')

# Create a new file and write to it

with open('dir1/new_file.txt', "w") as f:
    f.write("new content")

# Append to a file

with open('dir1/new_file.txt', "a") as f:
    f.write(" continued")

# Delete a file

os.remove('dir1/new_file.txt')

# Delete a directory

os.rmdir('dir1')