Option 1: Load data with the Snowpipe REST API¶
이 항목에서는 데이터를 로드하고 로드 내역 보고서를 검색하기 위해 공용 REST 엔드포인트를 호출하는 방법에 대해 설명합니다. 이 지침에서는 Data loading preparation using the Snowpipe REST API 의 설정 지침을 완료한 것으로 가정합니다.
Load data¶
로드는 다음의 두 단계로 수행됩니다.
- 1단계:
데이터 파일을 스테이징합니다.
내부 스테이지: PUT 명령을 사용하여 파일을 스테이징합니다.
외부 스테이지: 클라우드 공급자가 제공하는 클라이언트 도구를 사용하여 파일을 스테이지 위치(Amazon S3, Google Cloud Storage 또는 Microsoft Azure)에 복사합니다.
- 2단계:
스테이징된 데이터 파일을 로드하려면 insertFiles REST 엔드포인트에 요청을 제출합니다.
편의를 위해 이 항목에서는 REST 엔드포인트의 제출 방법을 보여주는 샘플 Java 및 Python 프로그램을 제공합니다.
Java SDK용 샘플 프로그램¶
이 예에서는 Bouncy Castle Crypto APIs 를 사용합니다. 이 예시를 컴파일 및 실행하려면 클래스 경로에 다음 JAR 파일을 포함해야 합니다.
공급자 JAR 파일(
bcprov-jdkversions.jar)PKIX / CMS / EAC / PKCS / OCSP / TSP / OPENSSL JAR 파일(
bcpkix-jdkversions.jar)
여기서 versions 은 JAR 파일이 지원하는 JDK의 버전을 지정합니다.
샘플 코드를 컴파일하기 전, 다음 자리 표시자 값을 바꿉니다.
PRIVATE_KEY_FILE = "/<경로>/rsa_key.p8"Use key pair authentication & key rotation (Data loading preparation using the Snowpipe REST API)에서 생성한 개인 키 파일의 로컬 경로를 지정합니다.
getPrivateKeyPassphrase()의return "<개인_키_암호 구문>"암호화된 키가 생성되면,
getPrivateKeyPassphrase()메서드를 구현하여 해당 키의 암호를 해독하기 위한 암호 구문을 반환합니다.host = "<계정_식별자>.snowflakecomputing.com"호스트 정보를 URL 형식으로 지정합니다.
계정 식별자의 선호 형식은 다음과 같습니다.
organization_name-account_nameSnowflake 조직 및 계정의 이름입니다. 자세한 내용은 형식 1(기본 설정): 조직의 계정 이름 섹션을 참조하십시오.
아니면, 필요한 경우 계정이 호스팅되는 리전 및 클라우드 플랫폼 과 함께 계정 로케이터 를 지정합니다. 자세한 내용은 형식 2: 리전의 계정 로케이터 섹션을 참조하십시오.
user = "<사용자_로그인_이름>"Snowflake 로그인 이름을 지정합니다.
pipe = "<db_이름>.<스키마_이름>.<파이프_이름>"데이터를 로그하기 위해 사용할 파이프의 정규화된 이름을 지정합니다.
files.add("<경로>/<파일 이름>", <파일_크기_(바이트)>)파일 오브젝트 목록에서 로드할 파일의 경로를 지정합니다.
선택적으로, Snowpipe가 데이터를 로딩하는 데 필요한 작업을 계산할 때 지연을 방지하기 위해 각 파일의 크기를 바이트 단위로 지정합니다.
지정하는 경로는 파일이 위치한 스테이지에 대해 상대적 이어야 합니다. 파일 확장자를 포함하여 각 파일의 전체 이름을 포함합니다. 예를 들어, gzip으로 압축된 CSV 파일은 확장자가
.csv.gz일 수 있습니다.
Python SDK용 샘플 프로그램¶
샘플 코드를 실행하기 전, 다음 자리 표시자 값을 바꿉니다.
<개인_키_경로>Use key pair authentication & key rotation (Data loading preparation using the Snowpipe REST API)에서 생성한 개인 키 파일의 로컬 경로를 지정합니다.
get_private_key_passphrase()의return "<개인_키_암호 구문>"암호화된 키가 생성되면,
get_private_key_passphrase()함수를 구현하여 해당 키의 암호를 해독하기 위한 암호 구문을 반환합니다.account='<계정_식별자>'계정(Snowflake에서 제공)의 고유 식별자를 지정합니다.
host설명을 참조하십시오.host='<계정_식별자>.snowflakecomputing.com'Snowflake 계정의 고유 호스트 이름을 지정합니다.
계정 식별자의 선호 형식은 다음과 같습니다.
organization_name-account_nameSnowflake 조직 및 계정의 이름입니다. 자세한 내용은 형식 1(기본 설정): 조직의 계정 이름 섹션을 참조하십시오.
아니면, 필요한 경우 계정이 호스팅되는 리전 및 클라우드 플랫폼 과 함께 계정 로케이터 를 지정합니다. 자세한 내용은 형식 2: 리전의 계정 로케이터 섹션을 참조하십시오.
user='<user_login_name>'Snowflake 로그인 이름을 지정합니다.
pipe='<db_name>.<schema_name>.<pipe_name>'데이터를 로그하기 위해 사용할 파이프의 정규화된 이름을 지정합니다.
file_list=['<path>/<filename>', '<path>/<filename>']|staged_file_list=[StagedFile('<path>/<filename>', <file_size_in_bytes>), StagedFile('<path>/<filename>', <file_size_in_bytes>)]파일 오브젝트 목록에서 로드할 파일의 경로를 지정합니다.
지정하는 경로는 파일이 위치한 스테이지에 대해 상대적 이어야 합니다. 파일 확장자를 포함하여 각 파일의 전체 이름을 포함합니다. 예를 들어, gzip으로 압축된 CSV 파일은 확장자가
.csv.gz일 수 있습니다.선택적으로, Snowpipe가 데이터를 로딩하는 데 필요한 작업을 계산할 때 지연을 방지하기 위해 각 파일의 크기를 바이트 단위로 지정합니다.
View the load history¶
Snowflake는 로드 내역을 살펴보기 위한 REST 엔드포인트 및 Snowflake Information Schema 테이블 함수를 제공합니다.
REST 엔드포인트:
Information Schema 테이블 함수:
Account Usage 뷰:
REST 엔드포인트 호출에서와 다르게, Information Schema 테이블 함수 또는 Account Usage 뷰를 쿼리하려면 실행 중인 웨어하우스가 필요합니다.
Delete staged files¶
데이터를 로드하고 더 이상 파일이 필요하지 않으면 스테이징된 파일을 삭제합니다. 자세한 지침은 Snowpipe가 데이터를 로드한 후 스테이징된 파일 삭제하기 섹션을 참조하십시오.