자습서: Snowpipe Streaming 고성능 아키텍처 SDK 시작하기

이 자습서에서는 새로운 고성능 아키텍처를 활용하는 데모 애플리케이션을 설정하고 실행하기 위한 단계별 지침을 snowpipe-streaming SDK 와 함께 제공합니다.

전제 조건

데모를 실행하기 전에 다음 전제 조건을 충족하는지 확인하십시오.

  • Snowflake 계정: Snowflake 계정에 대한 액세스 권한이 있는지 확인합니다. :ref:`label-snowpipe_streaming_high_performance_demo_project_step_1`에 설명된 전용 사용자 및 사용자 지정 역할을 생성하려면 충분한 권한(예: 초기 설정의 경우 ACCOUNTADMIN 또는 USERADMIN)이 있는 사용자가 필요합니다.

  • 네트워크 액세스: 네트워크에서 Snowflake 및 AWS S3에 대한 아웃바운드 연결을 허용하는지 확인합니다. SDK가 Snowflake와 AWS S3에 대한 REST API 호출을 수행하므로 필요한 경우 방화벽 규칙을 조정합니다.

  • Java 개발 환경: 종속성 관리를 위해 Java 11 이후 버전 및 Maven을 설치합니다.

  • Python: Python 버전 3.9 이상을 설치합니다.

  • Snowpipe Streaming SDKs and the sample code: Obtain the Java SDK or Python SDK and download the sample code for your preferred language from the Snowpipe Streaming SDK examples in the GitHub repository.

시작하기

이 섹션에서는 데모 애플리케이션을 설정하고 실행하는 데 필요한 단계를 간략하게 설명합니다.

1단계: Snowflake 오브젝트 구성하기

snowpipe-streaming SDK 를 사용하기 전에 Snowflake 환경 내에 대상 테이블과 전용 PIPE 오브젝트를 생성해야 합니다. 기존 아키텍처와 달리 고성능 아키텍처는 데이터 수집을 위해 PIPE 오브젝트가 필요합니다.

인증을 위한 키 페어 생성하기

OpenSSL 을 사용하여 인증을 위한 개인 공개 키 페어를 생성합니다. 자세한 내용은 키 페어 인증 및 키 페어 순환 섹션을 참조하십시오.

터미널에서 다음 명령을 실행하여 키를 생성합니다.

openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
Copy
PUBK=$(cat ./rsa_key.pub | grep -v KEY- | tr -d '\012')
echo "ALTER USER MY_USER SET RSA_PUBLIC_KEY='$PUBK';"
Copy

중요

생성된 rsa_key.p8 (개인 키) 및 rsa_key.pub (공개 키) 파일을 안전하게 저장합니다. 이후 인증 단계에서 사용됩니다.

데이터베이스, 스키마, 테이블, 파이프를 생성하고 사용자 인증을 구성합니다

Run the following SQL commands in your Snowflake account (for example, using Snowsight or Snowflake CLI). Note that you will need a role with permissions to create users, roles, and databases (such as ACCOUNTADMIN or USERADMIN for the first few lines, and then switching to the new role). Replace placeholders like MY_USER, MY_ROLE, MY_DATABASE, and so on, with your desired names.

-- 1. Create a dedicated role and user (Run with a highly-privileged role)
CREATE OR REPLACE USER MY_USER;
CREATE ROLE IF NOT EXISTS MY_ROLE;
GRANT ROLE MY_ROLE TO USER MY_USER;

-- 2. Set the public key for key-pair authentication
-- NOTE: Replace 'YOUR_FORMATTED_PUBLIC_KEY' with the output of the PUBK variable from the key generation step.
ALTER USER MY_USER SET RSA_PUBLIC_KEY='YOUR_FORMATTED_PUBLIC_KEY';

-- 3. Set the default role (Recommended)
ALTER USER MY_USER SET DEFAULT_ROLE=MY_ROLE;

-- 4. Switch to the new role and create objects
USE ROLE MY_ROLE;
-- NOTE: You may also need to run USE WAREHOUSE YOUR_WH; here if a default warehouse isn't set.

-- Create database and schema
CREATE OR REPLACE DATABASE MY_DATABASE;
CREATE OR REPLACE SCHEMA MY_SCHEMA;

-- Create a target table
CREATE OR REPLACE TABLE MY_TABLE (
    data VARIANT,
    c1 NUMBER,
    c2 STRING
);

-- Create PIPE object for streaming ingestion
CREATE OR REPLACE PIPE MY_PIPE
AS COPY INTO MY_TABLE FROM (SELECT $1, $1:c1, $1:ts FROM TABLE(DATA_SOURCE(TYPE => 'STREAMING')));


-- 5. Configure authentication policy (Optional, but recommended for explicit control)
CREATE OR REPLACE AUTHENTICATION POLICY testing_auth_policy
  AUTHENTICATION_METHODS = ('KEYPAIR')
  CLIENT_TYPES = ('DRIVERS');

-- Apply authentication policy (if created)
ALTER USER MY_USER SET AUTHENTICATION POLICY testing_auth_policy;
Copy

2단계: 인증 프로필 구성하기

데모 애플리케이션에는 인증 세부 정보를 포함한 연결 설정을 저장하기 위해 profile.json 파일이 필요합니다. SDK 는 보안 연결을 위해 키 페어 인증을 사용합니다.

프로필 구성 파일 생성하기

데모 프로젝트의 루트 디렉터리에 profile.json 파일을 만들거나 업데이트합니다.

profile.json 템플릿

{
    "user": "MY_USER",
    "account": "your_account_identifier",
    "url": "https://your_account_identifier.snowflakecomputing.com:443",
    "private_key_file": "rsa_key.p8",
    "role": "MY_ROLE"
}
Copy

자리 표시자를 바꿉니다.

  • MY_USER: :ref:`label-snowpipe_streaming_high_performance_demo_project_step_1`에 구성된 Snowflake 사용자 이름입니다.

  • your_account_identifier: Snowflake 계정 식별자(예: xy12345).

  • rsa_key.p8: :ref:`label-snowpipe_streaming_high_performance_demo_project_step_1`에서 생성한 개인 키 파일입니다.

  • MY_ROLE: label-snowpipe_streaming_high_performance_demo_project_step_1`에서 생성한 후 사용자에게 부여한 전용 역할(:code:`MY_ROLE)입니다.

3단계: 데모 프로젝트 설정하기

Download: Sample Java code

JAR 종속성 추가

Snowpipe Streaming SDK를 포함하려면 Maven :code:`pom.xml`에 다음 종속성을 추가합니다. Maven은 공용 리포지토리에서 JAR을 자동으로 다운로드합니다.

<dependency>
    <groupId>com.snowflake</groupId>
    <artifactId>snowpipe-streaming</artifactId>
    <version>YOUR_SDK_VERSION</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.18.1</version>
</dependency>
Copy

중요

:code:`YOUR_SDK_VERSION`을 `Maven Central<https://central.sonatype.com/artifact/com.snowflake/snowpipe-streaming>`_에서 사용 가능한 특정 버전으로 바꿉니다.

프로필 파일을 배치합니다

label-snowpipe_streaming_high_performance_demo_project_step_2`에서 구성한 :code:`profile.json 파일이 프로젝트의 루트 디렉터리에 있는지 확인합니다.

4단계: 제공된 코드 예제 사용 및 데모 애플리케이션 실행하기

터미널에서 프로젝트의 루트 디렉터리로 이동합니다.

빌드 및 실행

  • 프로젝트를 빌드합니다.

    mvn clean install
    
    Copy
  • 기본 클래스를 실행합니다.

    mvn exec:java -Dexec.mainClass="com.snowflake.snowpipestreaming.demo.Main"
    
    Copy

5단계: 데이터 확인

데모를 실행한 후 수집된 데이터를 Snowflake에서 확인합니다.

SELECT COUNT(*) FROM MY_DATABASE.MY_SCHEMA.MY_TABLE;
SELECT * FROM MY_DATABASE.MY_SCHEMA.MY_TABLE LIMIT 10;
Copy