자습서: Snowpipe Streaming 고성능 아키텍처 SDK 시작하기¶
이 자습서에서는 새로운 고성능 아키텍처를 활용하는 데모 애플리케이션을 설정하고 실행하기 위한 단계별 지침을 snowpipe-streaming
SDK 와 함께 제공합니다.
전제 조건¶
데모를 실행하기 전에 다음 사항이 준비되어 있는지 확인하십시오.
Snowflake 계정: 데이터베이스, 스키마, 테이블을 생성하고 보안 설정을 관리할 수 있는 충분한 권한이 있는 Snowflake 계정에 액세스합니다.
Java 개발 환경: 종속성 관리를 위한 Maven과 함께 Java 11 이상이 설치되어 있어야 합니다.
Snowpipe Streaming JAR: 프로젝트에 수동으로 포함해야 하는
snowpipe-streaming.jar
파일입니다.3단계: 데모 프로젝트 설정하기 에서 볼 수 있듯이, 프로젝트에 최신 버전의 JAR 을 포함하십시오.
샘플 Java 코드 를 다운로드합니다.
네트워크 액세스: 네트워크에서 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
PUBK=$(cat ./rsa_key.pub | grep -v KEY- | tr -d '\012')
echo "ALTER USER MY_USER SET RSA_PUBLIC_KEY='$PUBK';"
중요
생성된 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';
참고
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'
이 명령은 개인 키를 개행 문자를 이스케이프 처리하여 출력하므로 JSON 문자열에 적합합니다.
profile.json 템플릿¶
{
"user": "MY_USER",
"account": "your_account_identifier",
"url": "https://your_account_identifier.snowflakecomputing.com:443",
"private_key": "YOUR_FORMATTED_PRIVATE_KEY"
}
자리 표시자를 바꿉니다.
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>
중요
YOUR_SDK_VERSION
을 Maven Central에서 사용 가능한 특정 버전으로 바꿉니다.
프로필 파일을 배치합니다¶
profile.json
파일(2단계에서 구성한)이 프로젝트의 루트 디렉터리에 위치하는지 확인합니다.
4단계: 제공된 Java 코드 예제를 사용하여 데모 애플리케이션을 실행합니다¶
빌드 및 실행¶
터미널에서 프로젝트의 루트 디렉터리로 이동합니다.
프로젝트를 빌드합니다.
mvn clean install
메인 클래스를 실행합니다.
mvn exec:java -Dexec.mainClass="com.snowflake.snowpipestreaming.demo.Main"
5단계: 데이터 확인¶
데모를 실행한 후 수집된 데이터를 Snowflake에서 확인합니다.
SELECT COUNT(*) FROM MY_DATABASE.MY_SCHEMA.MY_TABLE;
SELECT * FROM MY_DATABASE.MY_SCHEMA.MY_TABLE LIMIT 10;