适用于采用高性能架构的 Snowpipe Streaming 的配置

本指南介绍适用于 Java 和 Python SDKs 的高性能 Snowpipe Streaming 客户端的配置设置。有两种不同的配置:

  • 进程范围的环境变量:控制整个运行应用程序的日志记录与指标输出的变量,必须在客户端初始化前设置。

  • 客户端属性:定义安全连接与数据引入目标的属性(例如 urluserprivate_key),需针对特定客户端对象进行配置,通常通过内联映射或 profile.json 文件实现。

单个应用程序可以运行多个客户端对象。每个对象都有其独立的客户端属性,但它们共享相同的进程级环境变量设置用于日志记录和指标收集。

高性能架构要求客户端必须显式绑定到特定的 PIPE 对象,该对象负责管理架构、转换及数据引入目标表的流程。

环境变量

这些配置设置控制进程级行为(如日志记录和指标收集),必须在客户端对象初始化前配置为环境变量。下表显示了适用于同一进程中所有 Snowpipe Streaming 客户端对象的环境变量:

变量

描述

默认值

SS_ENABLE_METRICS

设置为 TRUE 以启用内置的 Prometheus 指标服务器。

FALSE

SS_METRICS_PORT

用于公开指标的端口。

50000

SS_METRICS_IP

托管指标服务器的 IP 地址。

127.0.0.1

SS_LOG_LEVEL

要输出的最低日志记录级别。

info``(选项:``infowarnerror

所需属性

高性能 SDK 要求设置多个属性,以建立安全连接并指定数据引入目标 (PIPE)。下表显示了所需的连接和用户身份验证属性:

属性

描述

url

用于访问 Snowflake 账户的 URL,包括账户标识符。协议 (https:// (https://)) 和端口号是可选的。

user

Snowflake 账户的用户登录名。

account

Snowflake 账户的标识符(例如 xy12345)。

如果 authorization_type 设置为 JWT,默认情况下,您必须提供密钥内容或密钥文件路径,如下表所示:

属性

描述

private_key

用于对用户进行身份验证的私钥内容。仅包含关键内容;没有页眉、页脚或换行符。

private_key_file

私钥的文件路径;例如,rsa_key.p8。这是直接提供关键内容的替代方法。

可选属性

下表显示了高性能 SDK 可选属性:

属性

描述

role

连接到 Snowflake 后用于会话的访问控制角色。

authorization_type

配置身份验证方法的属性。选项为: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"
}
Copy

内联提供的客户端配置

以下示例演示如何直接在代码中定义客户端属性:

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'
Copy

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'
Copy

环境变量配置

以下示例演示如何在运行应用程序之前在 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
Copy

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
Copy
语言: 中文