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

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

전제 조건

데모를 실행하기 전에 다음 사항이 준비되어 있는지 확인하십시오.

  • Snowflake 계정: 데이터베이스, 스키마, 테이블을 생성하고 보안 설정을 관리할 수 있는 충분한 권한이 있는 Snowflake 계정에 액세스합니다.

  • Java 개발 환경: 종속성 관리를 위한 Maven과 함께 Java 11 이상이 설치되어 있어야 합니다.

  • Snowpipe Streaming JAR: 프로젝트에 수동으로 포함해야 하는 snowpipe-streaming.jar 파일입니다.

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

시작하기

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

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 (공개 키) 파일을 안전하게 저장합니다. 이후 인증 단계에서 사용됩니다.

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

Snowflake 계정에서 다음 SQL 명령을 실행(예: Snowsight 또는 SnowSQL)하여 필요한 오브젝트를 생성하고 사용자에 대한 인증을 구성합니다. MY_USER, MY_DATABASE 등과 같은 자리 표시자를 원하는 이름으로 바꿉니다.

-- Create Database and Schema

CREATE OR REPLACE DATABASE MY_DATABASE;
CREATE OR REPLACE SCHEMA MY_SCHEMA;

-- Create 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')));

-- Configure Authentication Policy (optional, but recommended for explicit control)

CREATE OR REPLACE AUTHENTICATION POLICY testing_auth_policy
  AUTHENTICATION_METHODS = ('SAML', 'PASSWORD', 'OAUTH', 'KEYPAIR')
  CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWSQL', 'DRIVERS');

-- Create or Modify User for SDK Authentication

CREATE OR REPLACE USER MY_USER; -- Or ALTER USER MY_USER if it already exists

-- Grant necessary roles to the user

GRANT ROLE ACCOUNTADMIN TO USER MY_USER; -- Grant a role with sufficient privileges

-- Apply authentication policy (if created)

ALTER USER MY_USER SET AUTHENTICATION POLICY testing_auth_policy;

-- Set default role (optional)

ALTER USER MY_USER SET DEFAULT_ROLE=ACCOUNTADMIN;

-- Set the public key for key-pair authentication

ALTER USER MY_USER SET RSA_PUBLIC_KEY='YOUR_FORMATTED_PUBLIC_KEY';
Copy

참고

YOUR_FORMATTED_PUBLIC_KEY 를 키 생성 단계에서 PUBK 변수의 출력으로 바꿉니다.

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

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

프로필 구성 파일 생성하기

제공된 Java 데모 프로젝트의 루트 디렉터리에서 profile.json 파일을 생성하거나 업데이트합니다.

profile.json 파일에 포함할 개인 키(rsa_key.p8)의 형식을 지정하려면 터미널에서 다음 명령을 실행하십시오.

sed 's/$/\\n/' rsa_key.p8 | tr -d '\n'
Copy

이 명령은 개인 키를 개행 문자를 이스케이프 처리하여 출력하므로 JSON 문자열에 적합합니다.

profile.json 템플릿

{
    "user": "MY_USER",
    "account": "your_account_identifier",
    "url": "https://your_account_identifier.snowflakecomputing.com:443",
    "private_key": "YOUR_FORMATTED_PRIVATE_KEY"
}
Copy

자리 표시자를 바꿉니다.

  • MY_USER: 이전 단계에서 구성한 Snowflake 사용자 이름입니다.

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

  • YOUR_FORMATTED_PRIVATE_KEY: 위에서 실행한 sed 명령의 출력입니다. 예시 형식: -----BEGIN PRIVATE KEY-----\n-----END PRIVATE KEY-----.

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

JAR 종속성 추가

Snowpipe Streaming SDK 를 포함하려면 Maven 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

중요

YOUR_SDK_VERSION 을 Maven Central에서 사용 가능한 특정 버전으로 바꿉니다.

프로필 파일을 배치합니다

profile.json 파일(2단계에서 구성한)이 프로젝트의 루트 디렉터리에 위치하는지 확인합니다.

4단계: 제공된 Java 코드 예제를 사용하여 데모 애플리케이션을 실행합니다

빌드 및 실행

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

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

    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