はじめに
先日、以下の記事を発表しました。
新しいテクノロジーに触れる時はいつでも楽しいものです。
中でも新しいプログラミング言語(のパラダイム)を学ぶことは、特別に楽しいことです。
ということで、まだまだ勉強中ですが、公式ドキュメントの学習過程の記録として、以下の記事をまとめてみました。
本稿情報のソースとして、下記ドキュメントを参照ください。
Kaskada はイベント処理エンジンとでも呼ぶことができます。
このイベント処理エンジンは、次の 2 つの主要コンポーネントで構成されます。
- kaskada-engineコンポーネント:イベント データを変換するためのステートフル コンピューティング エンジン
- kaskada-manager: クライアントと通信するためのステートフル API (オプションの) 。
Python で Kaskada を使用する
Kaskada を Python で使用するには、Python バージョン 3.6 以降がインストールされている必要があります。
pip を使用した Kaskada のインストール
Kaskadaは以下のようにpipコマンドを利用してインストールすることができます。
pip install kaskada
Kaskada がインストールされました。Kaskada は、ローカル セッションを作成することでローカルで使用できます。
Python でローカル Kaskada セッションを作成する
from kaskada.api.session import LocalBuilder
session = LocalBuilder().build()
ローカル セッションを作成すると、Kaskada サービスが、非永続的な Python サブプロセスとして実行されます(初回実行時には、ここで必要なコンポーネントがインストールされます)。
既存の Kaskada プロセスに接続するには、適切なエンドポイントでクライアントを初期化します。
Python でリモート Kaskada セッションを作成する
from kaskada import client
client.init(
# The host and port of the Kaskada manager API.
endpoint = "localhost:50051",
# If true, TLS encryption will be required for the API connection.
is_secure = False,
# An (optional) string identifying the client.
client_id = "python-client"
)
詳細については、Kaskada Python クライアントのドキュメントを参照してください。
IPython (Jupyter) で Kaskada を使用する
IPython は、Python コード ブロックを評価するために Jupyter や他のノートブックによって使用される対話型 Python ランタイムです。IPython は、コード ブロックの解釈方法をカスタマイズするための「マジック拡張機能」をサポートしています。Kaskada は、Kaskada のクエリを簡素化するマジック拡張機能を提供します。
Jupyter ノートブック内で Kaskada を使用するには、次のソフトウェアをインストールする必要があります。
- Python (バージョン 3.6 以降)
- Jupyter
Kaskada の Python ライブラリには、Fenl 言語でクエリを作成できるだけでなく、クエリの結果をノートブックで受け取ってレンダリングできるようにするノートブックのカスタマイズが含まれています。これらのカスタマイズを使用するには、まずこれらのカスタマイズを有効にする必要があります。
ノートブックで fenlmagic を有効にする
%load_ext fenlmagic
これにより、拡張機能が IPython コンテキストにロードされます。
以下のように、ヘルプを表示してみて、インストールが完了したことを確認できます。
%%fenl?
%fenl [--as-view AS_VIEW] [--data-token DATA_TOKEN] [--debug DEBUG]
[--output OUTPUT] [--preview-rows PREVIEW_ROWS]
[--result-behavior RESULT_BEHAVIOR] [--var VAR]
fenl query magic
optional arguments:
--as-view AS_VIEW adds the body as a view with the given name to all
subsequent fenl queries.
--data-token DATA_TOKEN
A data token to run queries against. Enables
repeatable queries.
--debug DEBUG Shows debugging information
--output OUTPUT Output format for the query results. One of "df"
(default), "json", "parquet" or "redis-bulk". "redis-
bulk" implies --result-behavior "final-results"
--preview-rows PREVIEW_ROWS
Produces a preview of the data with at least this many
rows.
--result-behavior RESULT_BEHAVIOR
Determines which results are returned. Either "all-
results" (default), or "final-results" which returns
only the final values for each entity.
--var VAR Assigns the QueryResponse to a local variable with the given
name. The QueryResponse contains result_url, query and dataframe.
詳細については、Fenlmagic クライアントのドキュメントを参照してください。
コマンドライン (CLI) で Kaskada を使用する
コマンドラインで Kaskada を使用するには、次の 3 つのコンポーネントをインストールする必要があります。
- Kaskada コマンドライン実行可能ファイル
- Kaskada API を提供する Kaskada マネージャー
- クエリを実行する Kaskada エンジン
これらはそれぞれ、 Kaskada の Github リポジトリのリリースセクションでコンパイル済みのバイナリとして入手できます。この例では、curlがインストールされていることを前提としています。
curl -s https://api.github.com/repos/kaskada-ai/kaskada/releases/latest |\
grep "browser_download_url.*" |\
grep $(uname -m | sed 's/x86_64/amd64/') |\
grep $(uname -s | tr '[:upper:]' '[:lower:]') |\
cut -d ':' -f2,3 |\
tr -d \" |\
xargs -I {} sh -c 'curl -L {} -o $(basename {}| cut -d '-' -f1,2)'
chmod +x kaskada-*
Kaskada コンポーネントの実行を簡素化するには、コンポーネントをパス内のディレクトリに移動します。まず、. 内のディレクトリのコロンで区切られたリストを出力しますPATH。
echo PATH
Kaskada バイナリを、リストされている場所のいずれかに移動します。
次の例こは、バイナリが現在作業ディレクトリにあり、 `/usr/local/binがPATHに含まれていることを前提としています。
mv kaskada-* /usr/local/bin/
OSX でのアプリケーションの認証
OSX を使用している場合は、アプリケーションのブロックを解除する必要がある場合があります。OSX は、ダウンロードしたアプリケーションがセキュリティ機能として実行できないようにします。次のコマンドを使用して、ファイルのダウンロード時にファイルに配置されたブロックを削除できます。
xattr -dr com.apple.quarantine <path to file>
これで、3 つのコンポーネントすべてを実行できるようになります。これらが正しくインストールされ、実行可能であることを確認するには、次のコマンドを実行してみてください。
kaskada-cli -h
次のような出力が表示されるはずです。
A CLI tool for interacting with the Kaskada API
Usage:
cli [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
help Help about any command
load A set of commands for loading data into kaskada
query A set of commands for running queries on kaskada
sync A set of commands for interacting with kaskada resources as code
Flags:
--config string config file (default is $HOME/.cli.yaml)
-d, --debug get debug log output
-h, --help help for cli
--kaskada-api-server string Kaskada API Server
--kaskada-client-id string Kaskada Client ID
--use-tls Use TLS when connecting to the Kaskada API (default true)
マネージャーとエンジンを実行して、Kaskada サービスのローカル インスタンスを開始できます。
kaskada-manager 2>&1 > manager.log 2>&1 &
kaskada-engine serve > engine.log 2>&1 &