データ構造と共通メソッド¶
以下のデータ構造とメソッドは各サーバで利用可能である。
データ構造¶
Constructor¶
- 
constructor(string host, int port, string name, int timeout_sec) 新しい RPC クライアントのインスタンスを作成する。
nameには、タスクを識別する ZooKeeper クラスタ内でユニークな名前である。 スタンドアロン構成では、空文字列 ("") を指定する。timeout_secには RPC メソッドの実行からレスポンスまでのタイムアウト時間を指定する。コンストラクタの利用方法を以下に示す:
// C++
#include <jubatus/client.hpp>
using jubatus::classifier::client::classifier;
// ...
classifier client("localhost", 9199, "cluster", 10);
# Python
from jubatus.classifier.client import Classifier
# ...
client = Classifier("localhost", 9199, "cluster", 10);
// Ruby
require 'jubatus/classifier/client'
include Jubatus::Classifier::Client
// ...
client = Classifier.new("localhost", 9199, "cluster", 10)
// Java
import us.jubat.classifier.ClassifierClient;
// ...
ClassifierClient client = new ClassifierClient("localhost", 9199, "cluster", 10);
Methods¶
- 
map<string, string> 
save(0: string id)¶ パラメータ: - id -- 保存されるファイル名
 
戻り値: それぞれのサーバの、 保存されたモデルファイルのパス。map のキーは
IPアドレス_ポート番号形式である。すべて のサーバで学習モデルをローカルディスクに保存する。
- 
bool 
load(0: string id)¶ パラメータ: - id -- 読み出すファイル名
 
戻り値: すべてのサーバで読み出しに成功したらTrue
すべて のサーバで、保存された学習モデルをローカルディスクから読み出す。
- 
bool 
clear()¶ 戻り値: モデルの削除に成功した場合 True すべて のサーバで、モデルを完全に消去する。
- 
string 
get_config()¶ 戻り値: 初期化時に設定した設定情報 サーバの設定を取得する。 取得される設定情報内容については、各サービスの API リファレンスを参照のこと。
- 
map<string, map<string, string>> 
get_status()¶ 戻り値: それぞれのサーバの内部状態。最上位の map のキーは IPアドレス_ポート番号形式である。すべての サーバの内部状態を取得する。 サーバはIPアドレス、ポート番号で識別する。
- 
bool 
do_mix()¶ 戻り値: Mix が成功した場合 True Update回数や経過時間に関係なく、Mixを強制的に一度実行させる。 このメソッドは サーバ に対して使用する。 プロキシに対して使用すると、RPCエラーが返却される。
- 
map<string, map<string, string>> 
get_proxy_status()¶ 戻り値: プロキシの内部状態。最上位の map のキーは IPアドレス_ポート番号形式である。プロキシの内部状態を取得する。
このメソッドは、 プロキシ に対して使用する。 サーバに対して使用すると、RPCエラーが返却される。
- 
string 
get_name()¶ 戻り値: ターゲットに指定されているクラスタの名前 このクライアントインスタンスが参照している先のクラスタの
nameを獲得する。nameとは、タスクを識別する ZooKeeper クラスタ内でユニークな名前である。 これは RPC メソッドではない。
- 
void 
set_name(0: string new_name)¶ パラメータ: - new_name -- 新しくターゲットに指定したいクラスタの名前
 
このクライアントインスタンスがターゲットとして参照する
nameを設定する。nameとは、タスクを識別する ZooKeeper クラスタ内でユニークな名前である。 このメソッドを使う事で、一つのクライアントインスタンスを使って異なるタスクのクラスタに接続することができる。 これは RPC メソッドではない。
言語固有の機能¶
Python / Ruby クライアントには言語固有の機能が存在する。
Python¶
embedded_jubatus モジュール (embedded-jubatus-python) を使用すると、Jubatus Core ライブラリで提供される機械学習アルゴリズムを Python から直接呼び出すことができる。
インストールを行うには、 pip install embedded_jubatus を実行する。
インストールするマシン上に Jubatus および Jubatus Core がインストールされている必要がある。
以下の例のように、 embedded_jubatus は RPC クライアントと同様のインタフェースで使用することができる。
from jubatus.anomaly.types import *
# Use RPC:
from jubatus.anomaly.client import Anomaly
client = Anomaly('127.0.0.1', 9199, '', 0)
# Use Embedded
from jubatus.embedded import Anomaly
client = Anomaly({
    'method': 'lof',
    'parameter': { ... },
    'converter': { ... },
})
# Use Embedded (using JSON config file instead of dict)
from jubatus.embedded import Anomaly
client = Anomaly('/path/to/config.json')
# Both Embedded/RPC client supports the same API:
client.add( ... )
また、以下の補助関数が利用可能である。
- 
jubatus.commmon.connect(cls, host, port, name, timeout=10)¶ cls で指定されたクラスのクライアントを作り、 host, port, name で指定されたサーバーに接続する。 コンテキストマネージャーが作成されるため、 with 文中で利用する。 ターゲットとして作成されたクライアントオブジェクトを受け取れる。 with から抜けるときに、このクライアントオブジェクトはサーバーとの接続を切断する。
with jubatus.common.connect(jubatus.classifier.client.Classifier, 'localhost', 9199, 'cluster_name', 10) as client: client.get_status()
Ruby¶
以下の補助関数が利用可能である。
- 
class 
Jubatus::Common::ClientBase¶ 全てのクライアントオブジェクトは、 ClientBase クラスの派生クラスとして定義されている。
- 
classmethod ClientBase.
connect(host, port, name, timeout_sec, &block)¶ 各アルゴリズムのクライアントクラスの connect メソッドを呼び出すことで、安全にクライアントのコネクションを閉じることができる。 connect メソッドは、接続先ホスト名、ポート番号、クラスタ名、タイムアウト時間とブロックを渡すと、クライアントオブジェクトを作製し指定のサーバーに接続する。 そして、渡されたブロックにクライアントオブジェクトを引き渡す。 ブロックを抜ける際に、このクライアントオブジェクトはサーバーとの接続を切断する。
Jubatus::Classifier::Client::Classifier.connect('localhost', 9199, 'cluster_name', 10) { |client| client.get_status() }
- 
classmethod ClientBase.