チュートリアル:Snowpipeストリーミング・ハイパフォーマンス・アーキテクチャ SDK の使用を始める¶
このチュートリアルでは、新しいハイパフォーマンスアーキテクチャを利用したデモアプリケーションのセットアップと実行について、 snowpipe-streaming SDK で手順を説明します。
前提条件¶
デモを実行する前に、以下の前提条件を満たしていることを確認してください。
Snowflakeアカウント:Snowflakeアカウントにアクセスできることを確認します。ステップ1:Snowflakeオブジェクトの構成 に詳述されている専用ユーザーとカスタムロールを作成するには、十分な権限(例えば、初期セットアップには ACCOUNTADMIN または USERADMIN)を持つユーザーが必要です。
ネットワークアクセス:ネットワークがSnowflakeおよび AWSS3 へのアウトバウンド接続を許可していることを確認します。必要に応じて ファイアウォールルールを調整します。これは、 SDK が Snowflakeと AWS S3 にRESTAPI コールをするからです。
Java開発環境Java 11以降と、依存関係管理のためのMavenをインストールします。
Python:Pythonバージョン3.9以降をインストールします。
Snowpipe Streaming SDKs and the sample code: Obtain the Java SDK or Python SDK and download the sample code for your preferred language from the Snowpipe Streaming SDK examples in the GitHub repository.
始めましょう¶
このセクションでは、デモアプリケーションのセットアップと実行に必要な手順の概要を説明します。
ステップ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
PUBK=$(cat ./rsa_key.pub | grep -v KEY- | tr -d '\012')
echo "ALTER USER MY_USER SET RSA_PUBLIC_KEY='$PUBK';"
重要
生成された rsa_key.p8 (秘密キー) と rsa_key.pub (公開キー) ファイルを安全に保存します。これらは、その後の認証ステップで使用されます。
データベース、スキーマ、テーブル、パイプの作成、ユーザー認証の構成¶
Run the following SQL commands in your Snowflake account (for example, using Snowsight or Snowflake CLI). Note that you will need a role with permissions to create users, roles, and databases (such as ACCOUNTADMIN or USERADMIN for the first few lines, and then switching to the new role). Replace placeholders like MY_USER, MY_ROLE, MY_DATABASE, and so on, with your desired names.
-- 1. Create a dedicated role and user (Run with a highly-privileged role)
CREATE OR REPLACE USER MY_USER;
CREATE ROLE IF NOT EXISTS MY_ROLE;
GRANT ROLE MY_ROLE TO USER MY_USER;
-- 2. Set the public key for key-pair authentication
-- NOTE: Replace 'YOUR_FORMATTED_PUBLIC_KEY' with the output of the PUBK variable from the key generation step.
ALTER USER MY_USER SET RSA_PUBLIC_KEY='YOUR_FORMATTED_PUBLIC_KEY';
-- 3. Set the default role (Recommended)
ALTER USER MY_USER SET DEFAULT_ROLE=MY_ROLE;
-- 4. Switch to the new role and create objects
USE ROLE MY_ROLE;
-- NOTE: You may also need to run USE WAREHOUSE YOUR_WH; here if a default warehouse isn't set.
-- Create database and schema
CREATE OR REPLACE DATABASE MY_DATABASE;
CREATE OR REPLACE SCHEMA MY_SCHEMA;
-- Create a 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')));
-- 5. Configure authentication policy (Optional, but recommended for explicit control)
CREATE OR REPLACE AUTHENTICATION POLICY testing_auth_policy
AUTHENTICATION_METHODS = ('KEYPAIR')
CLIENT_TYPES = ('DRIVERS');
-- Apply authentication policy (if created)
ALTER USER MY_USER SET AUTHENTICATION POLICY testing_auth_policy;
ステップ2:認証プロファイルの構成¶
デモアプリケーションでは、認証の詳細を含む接続設定を保存するために profile.json ファイルが必要です。SDK は、キーペア認証を使用して安全な接続を行います。
プロファイル構成ファイルの作成¶
デモプロジェクトのルートディレクトリで profile.json ファイルを作成または更新します。
profile.jsonテンプレート¶
{
"user": "MY_USER",
"account": "your_account_identifier",
"url": "https://your_account_identifier.snowflakecomputing.com:443",
"private_key_file": "rsa_key.p8",
"role": "MY_ROLE"
}
プレースホルダーを置き換えます。
MY_USER:ステップ1:Snowflakeオブジェクトの構成 で構成されたSnowflakeのユーザー名。your_account_identifier:Snowflake アカウント識別子(例:xy12345)。rsa_key.p8:ステップ1:Snowflakeオブジェクトの構成 で生成したプライベートキーファイル。MY_ROLE: ステップ1:Snowflakeオブジェクトの構成 で独自に作成してユーザーに付与した専用ロール(MY_ROLE)。
ステップ3:デモプロジェクトのセットアップ¶
Download: Sample Java code
JAR 依存関係の追加
Snowpipe Streaming SDKを含めるには、Maven :code:`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 で利用できる特定のバージョンに置き換えます。
Download: Sample Python code
** Python依存関係の追加**
SDK にはPythonバージョン3.9以降が必要です。
Python の Snowpipe Streaming SDK をインストールするには、次のコマンドを実行します。
pip install snowpipe-streaming
このパッケージの詳細については、`PyPI<https://pypi.org/project/snowpipe-streaming/>`_ をご参照ください。
プロファイルファイルの配置¶
ステップ2:認証プロファイルの構成 で構成した profile.json ファイルが、プロジェクトのルートディレクトリにあることを確認してください。
ステップ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;