Snowflake Notebooks 에서 파일 작업¶
이 항목에서는 사용자의 Snowflake Notebooks 에서 파일을 업로드하고 액세스하는 방법을 설명합니다.
노트북 환경의 파일¶
새로운 노트북을 만들면 두 개의 파일이 생성됩니다. 이러한 파일은 노트북 왼쪽의 Files 창에서 확인할 수 있습니다. 파일은 노트북 환경을 나타내는 내부 스테이지에 저장됩니다. 이 내부 스테이지에 저장된 파일은 세션 간에 유지됩니다.
기본 노트북 파일: 기본적으로 이 파일의 이름은
notebook_app.ipynb
입니다. 노트북을 Git에서 만들었거나 다른.ipynb
파일에서 업로드한 경우, 파일 이름이 다를 수 있습니다.environment.yml: 이 파일은 노트북 환경을 설명하는 자동 생성된 파일로, 어떤 패키지가 설치되어 있는지 등을 설명합니다.
파일 내용을 검사하려면 파일 이름을 선택하면 파일 내용의 미리 보기가 있는 팝업이 나타납니다. 파일은 읽기 전용입니다. 파일의 내용을 수정하려면 해당 파일을 다운로드한 다음 로컬에서 편집한 다음 업데이트된 복사본을 업로드해야 합니다.
노트북 환경의 임시 파일 시스템¶
노트북에는 활성 세션 동안 사용할 수 있는 임시 파일 시스템이 있습니다. 세션 중에 생성된 모든 파일은 이 임시 스테이지에 저장됩니다. 현재 노트북 세션을 종료한 후에는 임시 스테이지의 파일을 사용할 수 없습니다.
다음 코드는 이름이 myfile.txt
인 파일을 생성하고 그 안에 텍스트를 작성합니다.
with open("myfile.txt",'w') as f:
f.write("abc")
f.close()
이 파일은 이 파일이 생성되는 세션 동안 액세스할 수 있습니다.
listdir()
메서드를 사용하여 임시 스테이지에 파일을 나열합니다.
import os
os.listdir()
이제 현재 세션의 연결을 끊었다가 다시 연결합니다. listdir()
메서드를 다시 시도하면 myfile.txt
파일이 나열되지 않습니다.
노트북 세션 전체에 걸쳐 유지되는 파일¶
Notebook 세션에서 파일을 유지하려면:
Snowflake 스테이지에 파일 저장하기¶
세션 간에 파일을 유지하고 여러 노트북에서 파일을 참조하려면 Snowflake 스테이지를 사용하여 파일을 저장하십시오. 로컬 컴퓨터에서 스테이지로 파일을 업로드하고 Snowpark API의 파일 작업을 사용하여 노트북에서 액세스할 수 있습니다.
예¶
이 예제에서는 스테이지를 생성하고 노트북에서 스테이지에 있는 파일을 저장하고 검색하는 방법을 보여줍니다.
이름이 permanent_stage
인 스테이지를 생성하려면 SQL 셀에서 다음 코드를 실행합니다.
CREATE OR REPLACE STAGE permanent_stage;
다음으로, 일부 텍스트가 포함된 이름이 myfile.txt
인 파일을 만들려면 Python 셀에서 다음 코드를 실행합니다.
with open("myfile.txt",'w') as f:
f.write("abc")
f.close()
이 시점에 myfile.txt
는 노트북의 임시 파일 시스템에 저장된다는 점에 유의하십시오. 이를 스테이지로 이동하려면 Snowpark API를 사용하여 myfile.txt
를 permanent_stage
에 업로드하면 됩니다.
from snowflake.snowpark.context import get_active_session
session = get_active_session()
put_result = session.file.put("myfile.txt","@PERMANENT_STAGE", auto_compress= False)
put_result[0].status
세션 연결을 끊었다가 다시 연결하면 SQL 셀에서 다음 코드를 실행하여 파일이 여전히 존재하는지 확인할 수 있습니다.
LS @permanent_stage;
로컬 컴퓨터에서 노트북에 파일 추가¶
로컬 컴퓨터에서 파일을 업로드하여 Snowflake 노트북에서 사용할 수 있습니다.
Snowsight 에 로그인합니다.
Projects » Notebooks 를 선택합니다.
파일을 찾아 선택하거나 대화 상자로 끌어다 놓습니다.
Upload 를 선택하여 파일을 업로드합니다.
업로드된 파일은 노트북의 내부 스테이지에 저장되고 세션 간에 유지됩니다. 노트북 파일에서 로컬 경로를 사용하여 업로드된 파일을 참조할 수 있습니다. 노트북에서 파일 참조 섹션을 참조하십시오.
경고
파일을 업로드할 때 노트북 세션이 활성화되어 있는 경우, 업로드한 파일에 액세스하려면 노트북 세션을 다시 시작해야 합니다. 이는 알려진 버그입니다. Snowflake에서는 노트북에서 사용할 세션을 시작하기 전에 필요한 모든 파일을 추가하는 것이 좋습니다.
Git의 파일과 동기화¶
노트북이 Git에 연결되어 있는 경우, 노트북과 동일한 Git 폴더에 있는 모든 파일이 Files 탭에 표시됩니다.
Git에서 파일 작업에 대한 자세한 내용은 Git 리포지토리와 Snowflake Notebooks 동기화 섹션을 참조하십시오.
노트북에서 파일 참조¶
노트북 환경의 각 파일에는 스테이지 경로와 로컬 경로가 있습니다. 이러한 경로를 사용하여 노트북에서 파일을 참조할 수 있습니다.
Python을 사용하여 로컬 경로 참조하기¶
일반적으로 Python 라이브러리는 파일의 로컬 경로를 파일에 대한 참조로 사용합니다. 예를 들어, 다음 코드는 이 코드가 실행 중인 노트북과 동일한 디렉터리에 업로드된 data.csv
파일에 액세스합니다.
import pandas as pd
df = pd.read_csv("data.csv")
SQL을 사용하여 스테이지 경로 참조하기¶
SQL을 사용하면 Snowflake는 스테이지 경로에 따라 파일을 참조합니다. 노트북의 파일에 대한 스테이지 경로는 다음 형식을 따릅니다.
snow://notebook/<DATABASE>.<SCHEMA>.<NOTEBOOK_NAME>/versions/live/<file_name>
Copy path 메뉴를 사용하여 노트북 스테이지의 파일과 연결된 스테이지 경로를 찾습니다.
Snowsight 에 로그인합니다.
Projects » Notebooks 를 선택합니다.
Copy path 를 선택합니다. 이렇게 하면 파일 경로가 클립보드에 복사됩니다.
그런 다음, 다음 SQL 문을 사용하여 스테이지 파일 세부 정보를 나열할 수 있습니다.
LIST 'snow://notebook/<DATABASE>.<SCHEMA>.<NOTEBOOK_NAME>/versions/live/data.csv'
액세스 제어 요구 사항¶
노트북의 스테이지에서 파일에 액세스하려면 다음 권한이 있는 역할을 사용해야 합니다.
권한 |
오브젝트 |
---|---|
USAGE |
파일이 포함된 스테이지. |
제한 사항 및 고려 사항¶
노트북 세션을 시작하기 전에 파일을 로드합니다. 세션이 시작된 후에 파일을 로드하는 경우, 파일에 액세스하려면 세션을 다시 시작해야 합니다.
업로드할 파일 유형에는 제한이 없습니다.
파일당 크기 제한은 250MB 또는 그 이하입니다.
노트북의 로컬 경로에 작성된 파일은 Files UI에 표시되지 않습니다. 이는 알려진 버그입니다. 하지만 노트북 코드에서는 여전히 해당 파일을 사용할 수 있습니다.
예를 들어,
data.json
파일을 생성하면, Files UI에 표시되지 않더라도 다음 코드와 같이 액세스할 수 있습니다.# Generate sample JSON file with open("data.json", "w") as f: f.write('{"fruit":"apple", "size":3.4, "weight":1.4},{"fruit":"orange", "size":5.4, "weight":3.2}') # Read from local JSON file (File doesn't show in UI) df = pd.read_json("data.json",lines=True) df
기본 노트북 파일이 아닌 다른
.ipynb
파일을 여는 기능은 지원되지 않습니다.
추가 리소스¶
더 많은 예제를 보려면 Github의 다음 예제 노트북을 참조하십시오.