教程:开始使用 Snowpipe Streaming 高性能架构 SDK¶
本教程提供了有关设置和运行演示应用程序的分步说明,该演示应用程序利用了基于 snowpipe-streaming
SDK 的新型高性能架构。
先决条件¶
在运行演示之前,请确保满足以下先决条件:
Snowflake 账户:确认您有权访问具有足够权限的 Snowflake 账户,以创建数据库、架构、表和管理安全设置。
网络访问:确保您的网络允许出站连接到 Snowflake 和 AWS S3。必要时调整防火墙规则,因为 SDK 会向 Snowflake 和 AWS S3 发起 REST API 调用。
Snowpipe Streaming SDK:下载您首选语言的 SDK 和示例代码:
Java 开发环境:安装 Java 11 或更高版本,以及用于管理依赖关系的 Maven。
您的项目中包含 ` JAR 的最新版本 <https://repo1.maven.org/maven2/com/snowflake/snowpipe-streaming/ (https://repo1.maven.org/maven2/com/snowflake/snowpipe-streaming/)>`_,如 第 3 步:设置演示项目 演示。
下载 示例 Java 代码 (https://gist.github.com/sfc-gh-chathomas/a7b06bb46907bead737954d53b3a8495#file-main-java/)。
按照 第 3 步:设置演示项目 演示安装 Snowpipe Streaming SDK for Python。
下载 示例 Python 代码 (https://gist.github.com/sfc-gh-chathomas/a7b06bb46907bead737954d53b3a8495#file-example-py/)。
开始使用¶
本节概述了设置和运行演示应用程序所需的步骤。
第 1 步:配置 Snowflake 对象¶
在使用 :code:`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';"
创建数据库、架构、表、管道并配置用户身份验证¶
在您的 Snowflake 账户(例如,使用 Snowsight 或 SnowSQL)中运行以下 SQL 命令,为您的用户创建必要的对象并配置身份验证。用您想要的名字替换占位符(例如 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
文件。
要格式化您的私钥 (rsa_key.p8
) 以将其包含在 profile.json
文件中,请在终端中执行以下命令:
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.cn: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 上可用的特定版本。
添加 Python 依赖项
SDK 需要 Python 版本 3.9 或更高版本。
要安装 Snowpipe Streaming SDK for Python,请运行以下命令:
pip install snowpipe-streaming
放置配置文件¶
确保 profile.json
文件(在步骤 2 中配置)位于项目的根目录中。
第 4 步:使用提供的代码示例并运行演示应用程序¶
在终端中导航到项目的根目录。
构建并执行
构建项目:
mvn clean install
运行主类:
mvn exec:java -Dexec.mainClass="com.snowflake.snowpipestreaming.demo.Main"
运行演示应用程序
运行 Python 演示:
python example.py
第 5 步:验证数据¶
运行演示后,在 Snowflake 中验证引入的数据:
SELECT COUNT(*) FROM MY_DATABASE.MY_SCHEMA.MY_TABLE;
SELECT * FROM MY_DATABASE.MY_SCHEMA.MY_TABLE LIMIT 10;