2017-11-14 2 views
0

私はスパークアプリケーションのデータストリームをカフカストリームから読み込んでいます。私の要求は、ユーザーがリクエスト(検索/ブラウズなど)を行ったときにユーザーに製品の推奨事項を提示することです。kafkaストリームのスパークアプリケーションが推奨を生成するのに時間がかかります

私はすでにユーザーのスコアを含む訓練されたモデルを持っています。私はJavaとorg.apache.spark.mllib.recommendation.MatrixFactorizationModelモデルを使用して、私のスパークアプリケーションの開始時にモデルを一度読み込みます。ブラウジングイベントがあるときはいつでも、私は既に存在する訓練されたモデルからユーザーのための推薦を生成するためにrecommendProducts(user_id、num_of_recommended_products)APIを呼び出します。

このAPIは、ユーザーあたりの結果を生成するのに3〜5秒かかるため、ストリーム処理が遅れます。このAPIの時間を最適化する方法はありますか?ストリーム時間を15秒から1分に増やすことを検討しています(現在の結果は不明)

答えて

1

recommendProductsをリアルタイムで呼び出すことは意味がありません。 ALSモデルは学習データセットに見られるユーザーのためだけに予測を行うことができるので、recommendProductsForUserを一度保存​​し、キーによる最初の検索をサポートするストアに出力を保存し、必要に応じてそこから結果を取得します。

ストレージレイヤを追加することができない場合は、recommendProductsForUserの出力、id、チェックポイント、およびキャッシュの予測によるパーティション分割、次にjoinのidstreamによる入力ストリームを使用することもできます。

関連する問題