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

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

전제 조건

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

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

  • 네트워크 액세스: 네트워크에서 Snowflake 및 Amazon S3, Google Cloud Platform(GCS), Azure Blob 저장소에 대한 아웃바운드 연결을 허용하는지 확인합니다. SDK가 Snowflake와 해당 클라우드 저장소 공급자에 대한 REST API 호출을 수행하므로 필요한 경우 방화벽 규칙을 조정합니다.

    • 네트워크 연결을 확인하려면 다음 명령을 사용합니다.

    # Test connectivity to Snowflake; replace with your account URL
    curl -I https://<your_account_identifier>.snowflakecomputing.com
    
    # Test connectivity to AWS S3
    curl -I https://s3.amazonaws.com
    
    # Test connectivity to GCS
    curl -I https://storage.googleapis.com
    
    # Test connectivity to Azure Blob Storage
    curl -I https://azure.blob.core.windows.net  or curl -I https://<your_account_name>.blob.core.windows.net
    
    Copy
  • Java 개발 환경: 종속성 관리를 위해 Java 11 이후 버전 및 Maven을 설치합니다.

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

  • 시스템 요구 사항: SDK에는 glibc 버전 2.26 이상이 필요합니다. 현재 glibc 버전은 다음을 사용하여 확인할 수 있습니다.

    ldd --version
    
    Copy
  • Snowpipe Streaming SDKs 및 샘플 코드:

    GitHub 리포지토리<https://github.com/snowflakedb/snowpipe-streaming-sdk-examples>`_의 `Snowpipe Streaming SDK 예제에서 원하는 언어의 샘플 코드를 다운로드합니다.

시작하기

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

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

snowpipe-streaming SDK를 사용하기 전에 Snowflake 환경 내에 대상 테이블을 생성해야 합니다. 클래식 아키텍처와 달리, 고성능 아키텍처에는 데이터 수집을 위한 PIPE 오브젝트가 필요합니다. 이 자습서에서는 대상 테이블에 대해 수집 시점에 자동으로 생성되는 기본 파이프를 사용합니다. 진행 중인 변환 또는 수집 시점 클러스터링과 같은 추가 기능이 필요한 경우 CREATE 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

중요

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

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

Snowflake 계정에서 다음 SQL 명령을 실행합니다(예: Snowsight 또는 Snowflake CLI 사용). 사용자, 역할 및 데이터베이스를 생성하기 위한 권한이 있는 역할(예: 처음 몇 줄에 대해 ACCOUNTADMIN 또는 USERADMIN이 필요하고, 그 이후에 새 역할로 전환)이 필요합니다. MY_USER, MY_ROLE, MY_DATABASE 등과 같은 자리 표시자를 원하는 이름으로 바꿉니다.

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

-- 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단계: 데모 프로젝트 설정하기

다운로드: `샘플 Java 코드<https://github.com/snowflakedb/snowpipe-streaming-sdk-examples/tree/main/java-example>`_

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