チュートリアル: Snowpipeストリーミング・ハイパフォーマンス・アーキテクチャ SDK の使用を始める

このチュートリアルでは、新しいハイパフォーマンスアーキテクチャを利用したデモアプリケーションのセットアップと実行について、 snowpipe-streaming SDK で手順を説明します。

前提条件

デモを実行する前に、以下を確認してください。

  • Snowflake アカウント: データベース、スキーマ、テーブルの作成、セキュリティセットの管理に十分な権限を持つSnowflakeアカウントへのアクセス。

  • Java開発環境: Java 11以上がインストールされ、依存関係管理のためにMavenがインストールされていること。

  • Snowpipe Streaming JAR: snowpipe-streaming.jar ファイル。手動でプロジェクトに含める必要があります。

  • ネットワークアクセス:ネットワークがSnowflakeおよび AWS S3へのアウトバウンド接続を許可していることを確認します。SDK が Snowflake と AWS S3 に REST API コールを行うため、必要に応じてファイアウォールルールを調整します。

始めましょう

このセクションでは、デモアプリケーションのセットアップと実行に必要な手順の概要を説明します。

ステップ1:Snowflakeオブジェクトの構成

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

重要

生成された rsa_key.p8 (秘密キー) と 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 ファイルを作成または更新します。

profile.json ファイルに含める秘密キー (rsa_key.p8) を形式化するには、ターミナルで以下のコマンドを実行します。

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.com: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:提供されたJavaコード例を使用して、デモアプリケーションを実行します。

構築と実行

  • ターミナルでプロジェクトのルート・ディレクトリに移動します。

  • プロジェクトの構築:

    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