LoginSignup
0
1

特徴量エンジンKaskadaリファレンス~マテリアライゼーション

Posted at

はじめに

先日、以下の記事を発表しました。

新しいテクノロジーに触れる時はいつでも楽しいものです。
中でも新しいプログラミング言語(のパラダイム)を学ぶことは、特別に楽しいことです。

ということで、まだまだ勉強中ですが、公式ドキュメントの学習過程の記録として、以下の記事をまとめてみました。

本稿情報のソースとして、下記ドキュメントを参照ください。

マテリアライゼーション

マテリアライゼーションはクエリに似ていますが、テーブルにデータが追加されるたびに結果が更新される点が異なります。マテリアライゼーションを使用して、さまざまなフィーチャー(特徴量)ストアに特徴量ベクトルを入力することができます。このような構成は、プロダクション環境における低遅延の推論に適しています。

サポートされているマテリアライゼーション先

Kaskada は、さまざまな外部データ ストアへのマテリアライゼーションをサポートしています。

パルサー

構成例:

materializations:
  # The name of the materialization
- materialization_name: PulsarExample
  # The epxression to materializa
  expression: PurchaseStats
  # Where the expression's final results will be written
  pulsar:
    broker_service_url: pulsar://127.0.0.1:6650
    tenant: public
    namespace: default
    topic_name: pulsar-example

オブジェクトストア

構成例:

materializations:
- materialization_name: PulsarExample
  expression: PurchaseStats
  object_store:
    file_type: parquet
    output_prefix_location: s3://my-bucket/path/to/results/

マテリアライゼーションの管理

マテリアライゼーションの作成

マテリアライゼーションを作成するには、まずマテリアライズしたい式を記述します。
ここでは、ユーザーの購入に関する統計に興味があるとします。

from kaskada import materialization
from kaskada.api.session import LocalBuilder

session = LocalBuilder().build()

purchase_stats = """
{
    time: Purchase.purchase_time,
    entity: Purchase.customer_id,
    max_amount: Purchase.amount | max(),
    min_amount: Purchase.amount | min(),
}
"""

tenant = "public"
namespace = "default"
topic_name = "model_features"
broker_service_url = "pulsar://127.0.0.1:6650"
destination = materialization.PulsarDestination(tenant, namespace, topic_name, broker_service_url)

materialization.create_materialization(
    name = "PurchaseStats",
    destination = destination,
    query = purchase_stats,
)

現在、CLI はオブジェクト ストア宛先タイプを使用するマテリアライズオンのみを作成できます。これは--path-uriオプションを使用して行われます。

マテリアライゼーションのリスト

list マテリアライゼーション メソッドは、ユーザーに対して定義されたすべてのマテリアライゼーションを返します。オプションの検索文字列を使用して、応答セットをフィルタリングできます。

マテリアライゼーションをリストする例を次に示します。

from kaskada import materialization
from kaskada.api.session import LocalBuilder

session = LocalBuilder().build()

materialization.list_materializations()

マテリアライゼーションの取得

マテリアライゼーションの作成時につけた名前を使用してマテリアライゼーションを取得できます。

from kaskada import materialization
from kaskada.api.session import LocalBuilder

session = LocalBuilder().build()

materialization.get_materialization("PurchaseStats")

マテリアライゼーションの更新

マテリアライゼーションは現在のところ不変(イミュータブル)です。マテリアライゼーションを更新するには、そのマテリアライゼーションを削除し、新しい式で再作成する必要があります。

マテリアライゼーションの削除

マテリアライゼーションは、その名前を使用して削除できます。

from kaskada import materialization
from kaskada.api.session import LocalBuilder

session = LocalBuilder().build()

materialization.delete_materialization("PurchaseStats")

マテリアライゼーションを削除しても、外部データ ストアに保存されているデータは削除されません。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1