はじめに
先日、以下の記事を発表しました。
新しいテクノロジーに触れる時はいつでも楽しいものです。
中でも新しいプログラミング言語(のパラダイム)を学ぶことは、特別に楽しいことです。
ということで、まだまだ勉強中ですが、公式ドキュメントの学習過程の記録として、以下の記事をまとめてみました。
本稿情報のソースとして、下記ドキュメントを参照ください。
マテリアライゼーション
マテリアライゼーションはクエリに似ていますが、テーブルにデータが追加されるたびに結果が更新される点が異なります。マテリアライゼーションを使用して、さまざまなフィーチャー(特徴量)ストアに特徴量ベクトルを入力することができます。このような構成は、プロダクション環境における低遅延の推論に適しています。
サポートされているマテリアライゼーション先
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")
マテリアライゼーションを削除しても、外部データ ストアに保存されているデータは削除されません。