适用于采用高性能架构的 Snowpipe Streaming 的配置¶
本指南介绍适用于 Java 和 Python SDKs 的高性能 Snowpipe Streaming 客户端的配置设置。有两种不同的配置:
进程范围的环境变量:控制整个运行应用程序的日志记录与指标输出的变量,必须在客户端初始化前设置。
客户端属性:定义安全连接与数据引入目标的属性(例如
url、user及private_key),需针对特定客户端对象进行配置,通常通过内联映射或profile.json文件实现。
单个应用程序可以运行多个客户端对象。每个对象都有其独立的客户端属性,但它们共享相同的进程级环境变量设置用于日志记录和指标收集。
高性能架构要求客户端必须显式绑定到特定的 PIPE 对象,该对象负责管理架构、转换及数据引入目标表的流程。
环境变量¶
这些配置设置控制进程级行为(如日志记录和指标收集),必须在客户端对象初始化前配置为环境变量。下表显示了适用于同一进程中所有 Snowpipe Streaming 客户端对象的环境变量:
变量 |
描述 |
默认值 |
|---|---|---|
|
设置为 TRUE 以启用内置的 Prometheus 指标服务器。 |
FALSE |
|
用于公开指标的端口。 |
50000 |
|
托管指标服务器的 IP 地址。 |
127.0.0.1 |
|
要输出的最低日志记录级别。 |
|
所需属性¶
高性能 SDK 要求设置多个属性,以建立安全连接并指定数据引入目标 (PIPE)。下表显示了所需的连接和用户身份验证属性:
属性 |
描述 |
|---|---|
|
用于访问 Snowflake 账户的 URL,包括账户标识符。协议 (https:// (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.cn",
"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.cn",
"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.cn");
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'
环境变量配置¶
以下示例演示如何在运行应用程序之前在 shell 中定义进程范围的环境变量:
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