Snowpark API¶
Snowparkライブラリは、データパイプライン内のデータをクエリおよび処理するための直感的な API を提供します。このライブラリを使用すると、アプリケーションコードが実行されるシステムにデータを移動することなく、Snowflakeでデータを処理するアプリケーションを構築できます。Snowparkには、他のクライアントライブラリとの差別化をもたらすいくつかの機能があります。
Snowpark API は、 SQL ステートメントを構築するためのプログラミング言語構造を提供します。たとえば、 API は、
'select column_name'
を文字列として記述するのではなく、返す列名を指定するために使用できるselect
メソッドを提供します。文字列を使用して実行する SQL ステートメントを指定することもできますが、Snowparkが提供するネイティブ言語構造を使用すると、 インテリジェントコード補完 や型チェックなどの機能を利用できます。
Snowparkの操作はサーバー上で遅延実行されるため、クライアントとSnowflakeデータベース間で転送されるデータの量が削減されます。
Snowparkのコア抽象化は DataFrame です。これはデータのセットを表し、そのデータを操作するためのメソッドを提供します。クライアントコードでは、オブジェクトを作成し、 DataFrame 使用するデータ(たとえば、データを含む列、行に適用するフィルターなど)を取得するように設定します。
DataFrame オブジェクトを作成するときには、データは取得されません。代わりに、データを取得する準備ができたら、 DataFrame オブジェクトを評価し、対応する SQL ステートメントをSnowflakeデータベースに送信して実行するアクションを実行できます。
コード内にユーザー定義関数(UDFs)を作成でき、Snowparkはコードをサーバーにプッシュできます。サーバーでは、コードがデータを操作できます。
クライアントコードの記述に使用するのと同じ言語で関数を記述できます(例えば、Scalaで無名関数を使用するか、またはPythonでラムダを使用することにより)。これらの関数を使用してSnowflakeデータベースのデータを処理するには、カスタムコードでユーザー定義関数(UDFs)を定義して呼び出します。
Snowparkは、 UDFs のカスタムコードをSnowflakeデータベースに自動的にプッシュします。クライアントコードで UDF を呼び出すと、カスタムコードがサーバー(データのある場所)で実行されます。データに対して関数を実行するために、データをクライアントに転送する必要はありません。
Spark用Snowflakeコネクター と比較すると、Snowparkには次の利点があります。
Snowparkは、Snowflake UDFs を含むすべての操作のプッシュダウンをサポートしています。
Snowparkは、計算のためにSnowflakeの外部に別個のクラスターを必要としません。すべての計算はSnowflake内で行われます。
次のトピック: