2017-02-14 4 views
3

私たちはSpark(2.x)ML訓練モデルをロードする方法を見つけようとしています。そのため、リクエスト(RESTインターフェイス経由)でクエリを実行して予測を得ることができます。 http://predictor.com:8080/give/me/predictions?a=1,b=2,c=3Spark - Spark JobServerによるリアルタイムのリクエストベースの推奨?

モデルをSparkに読み込み(MLWritableを使って訓練した後に保存されている)、モデルを予測に使用すると、すぐに使用できるlibsがありますが、それをジョブにラップして実行しますSparkContextの初期化によるリクエスト/コールごとに発生します。

しかし、Sparkを使用すると、Pipelineモデルを保存してSparkContextの外で実装する必要なく、同じ機能変換を実行できるという利点があります。

掘り下げた後、spark-job-serverは、ジョブサーバー用に初期化された「ホット」スパークコンテキストを使用できるようにすることでこの問題を解決する可能性があることがわかりました。したがって、予測spark-job-serverのREST APIを使用して、既存のコンテキスト内のジョブ(および結果の取得)を実行します。

予測の場合は、これがAPIの最適なアプローチですか?フィーチャ空間のため、すべての組み合わせを事前に予測することはできません。

また、Spark Streamingを使用して予測をメッセージキューに保存することも考えていました。これにより、spark-job-serverを使用することはできませんが、全体的なフローは単純化されません。誰もが同様のアプローチを試みましたか?

+0

最近、jobserverを使用して、要求に応じてSparkジョブを実行する同様の問題を解決しようとしました。それはいいですが、製品を出荷する準備ができている生産グレードではありません。 Spark 2.xのサポートはプレビューにあり、展開するには作業が必要です。相当量の作業をする準備ができている場合は、先に進んでください。私たちは、Sparksの文書化されていないREST APIに基づいた解決策を終了しました。 –

+0

それはまともな時間(サブ0.1秒)で応答するでしょうか?私の経験では、MLパイプラインは、NaiveBayes、W2V、および私が使用したいくつかのもので、スキーマの変換、型チェック、そして最も重要なモデル/マトリックス放送のような、計算のさまざまなステップのために実際には遅いです。 (予測のトンがあれば償却されますが、1回の予測ではその設定は禁止されています)。いずれにせよ、私はスパークMLパイプがどこでもサブ秒近くで実行されるのを見ません。あなたは別に達成しましたか? – GPI

答えて

関連する問題