教程:开始使用 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/)。

开始使用

本节概述了设置和运行演示应用程序所需的步骤。

第 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
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 账户(例如,使用 Snowsight 或 SnowSQL)中运行以下 SQL 命令,为您的用户创建必要的对象并配置身份验证。用您想要的名字替换占位符(例如 MY_USERMY_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';
Copy

备注

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

此命令将输出带有换行符转义的私钥,使其适用于 JSON 字符串。

profile.json 模板

{
    "user": "MY_USER",
    "account": "your_account_identifier",
    "url": "https://your_account_identifier.snowflakecomputing.cn:443",
    "private_key": "YOUR_FORMATTED_PRIVATE_KEY"
}
Copy

替换占位符:

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

重要

YOUR_SDK_VERSION 替换为 Maven Central 上可用的特定版本。

放置配置文件

确保 profile.json 文件(在步骤 2 中配置)位于项目的根目录中。

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