고성능 아키텍처를 갖춘 Snowpipe Streaming 구성¶
이 가이드에서는 Java 및 Python SDKs에서 사용할 수 있는 고성능 Snowpipe Streaming 클라이언트의 구성 설정에 대해 설명합니다. 구성에는 다음과 같은 두 가지 고유한 종류가 있습니다.
프로세스 전반의 환경 변수: 실행 중인 전체 애플리케이션에 대한 로깅 및 메트릭을 제어하는 변수는 클라이언트가 초기화되기 전에 설정해야 합니다.
클라이언트 측 속성: 보안 연결 및 수집 대상(예:
url,user및private_key)을 정의하는 속성은 일반적으로 인라인 맵 또는profile.json파일을 통해 특정 클라이언트 오브젝트에 대해 구성됩니다.
단일 애플리케이션은 여러 클라이언트 오브젝트를 실행할 수 있습니다. 각 오브젝트에는 고유한 클라이언트 측 속성이 있지만, 모두 로깅 및 메트릭에 대해 동일한 프로세스 전반의 환경 변수 설정을 공유합니다.
고성능 아키텍처에서는 클라이언트가 스키마, 변환 및 대상 테이블로의 수집을 관리하는 특정 PIPE 오브젝트에 명시적으로 바인딩되어야 합니다.
환경 변수¶
이러한 구성 설정은 로깅 및 메트릭 수집과 같은 프로세스 전반의 동작을 제어하며 클라이언트 오브젝트가 초기화되기 전에 환경 변수로 구성해야 합니다. 다음 테이블에서는 동일한 프로세스 내의 모든 Snowpipe Streaming 클라이언트 오브젝트에 적용되는 환경 변수를 보여줍니다.
변수 |
설명 |
기본값 |
|---|---|---|
|
기본 제공 Prometheus 메트릭 서버를 활성화하려면 TRUE로 설정합니다. |
FALSE |
|
메트릭을 노출하는 데 사용되는 포트입니다. |
50000 |
|
메트릭 서버가 호스팅되는 IP 주소입니다. |
127.0.0.1 |
|
출력할 최소 로깅 수준입니다. |
|
필수 속성¶
고성능 SDK에서는 보안 연결 및 특정 수집 대상(PIPE)을 모두 설정하기 위해 여러 속성을 요구합니다. 다음 테이블에서는 필수 연결 및 사용자 인증 속성을 보여줍니다.
속성 |
설명 |
|---|---|
|
계정 식별자를 포함하여 Snowflake 계정에 액세스하기 위한 URL입니다. 프로토콜(https://) 및 포트 번호는 선택 사항입니다. |
|
Snowflake 계정의 사용자 로그인 이름입니다. |
|
Snowflake 계정 식별자입니다(예: xy12345). |
``authorization_type``이 ``JWT``(기본값)로 설정된 경우 다음 테이블에서와 같이 키 내용 또는 키 파일 경로를 제공해야 합니다.
속성 |
설명 |
|---|---|
|
사용자 인증에 사용되는 개인 키 내용입니다. 머리글, 바닥글 또는 줄 바꿈 없이 주요 내용만 포함합니다. |
|
개인 키의 파일 경로입니다(예: rsa_key.p8). 키 내용을 직접 제공하는 대신 이 경로를 사용할 수 있습니다. |
선택적 속성¶
다음 테이블에서는 고성능 SDK 선택적 속성을 보여줍니다.
속성 |
설명 |
|---|---|
|
Snowflake에 연결한 후 세션에 사용할 액세스 제어 역할입니다. |
|
인증 방법을 구성하는 속성입니다. 옵션은 JWT(키 페어 인증, 기본값)입니다. |
시크릿 외부화하기¶
Snowflake는 private_key 및 OAuth 자격 증명과 같은 시크릿을 외부화하고 키 관리 서비스(예: AWS KMS)에 저장할 것을 강력히 권장합니다.
구성 예제¶
다음 예제에서는 클라이언트 측 및 환경 변수 구성을 보여줍니다.
profile.json 파일을 통한 클라이언트 측 구성¶
다음 예제에서는 클라이언트 측 속성을 정의하는 방법을 보여줍니다.
// profile.json
{
"authorization_type": "JWT",
"url": "https://<account_identifier>.snowflakecomputing.com",
"user": "MY_SNOWFLAKE_USER",
"account": "XY12345",
"private_key_file": "/path/to/rsa_key.p8",
"role": "MY_INGEST_ROLE"
}
클라이언트 측 구성이 인라인으로 제공됨¶
다음 예제에서는 코드에서 직접 클라이언트 측 속성을 정의하는 방법을 보여줍니다.
Python 예제¶
config = {
"authorization_type": "JWT",
"url": "https://<account_identifier>.snowflakecomputing.com",
"user": "MY_SNOWFLAKE_USER",
"account": "XY12345",
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----",
}
# ... code to initialize client with 'config'
Java 예제¶
Map<String, Object> config = new HashMap<>();
config.put("authorization_type", "JWT");
config.put("url", "https://<account_identifier>.snowflakecomputing.com");
config.put("user", "MY_SNOWFLAKE_USER");
config.put("account", "XY12345");
config.put("private_key_file", "/path/to/rsa_key.p8");
config.put("role", "MY_INGEST_ROLE");
// ... code to initialize client with 'config'
환경 변수 구성¶
다음 예제에서는 애플리케이션을 실행하기 전에 셸에서 프로세스 전반의 환경 변수를 정의하는 방법을 보여줍니다.
Linux 또는 macOS(Bash 또는 Zsh)¶
# Set the log level for the entire application process to 'warn'
export SS_LOG_LEVEL=warn
# Change the IP for metrics to a specific loopback address
export SS_METRICS_IP=127.0.0.5
# Now run your application
Windows(명령 프롬프트)¶
# Set the log level for the entire application process to 'warn'
set SS_LOG_LEVEL=warn
# Change the metrics port
set SS_METRICS_PORT=55000
# Now run your application