water8394/flink-recommandSystem-demo
:helicopter::rocket:基于Flink实现的商品实时推荐系统。flink统计商品热度,放入redis缓存,分析日志信息,将画像标签和实时记录放入Hbase。在用户发起推荐请求后,根据用户画像重排序热度榜,并结合协同过滤和标签两个推荐模块为新生成的榜单的每一个产品添加关联产品,最后返回新的用户列表。
解決する問題
このプロジェクトは、eコマース向けのリアルタイム製品レコメンデーションシステムの完全で実行可能なデモです。人気、アイテムベースの協調フィルタリング、製品プロファイル類似度、ユーザー興味コンテキストなど、複数のレコメンデーション戦略を組み合わせ、Webページを通じて提供する方法を示します。単一のアルゴリズムを示すだけでなく、ユーザーアクションがストリーミングされる際に、異なるシグナルをマージしてリアルタイムで更新する方法を実証します。
仕組み
システムは、ユーザーアクションログ(閲覧、お気に入り、購入)をKafkaにストリーミングします。6つのFlinkジョブがこれらのログを消費し、派生データをHBaseとRedisに書き込みます。別のスケジューラジョブがアイテム間類似度スコアを計算します。Spring Boot Webモジュールはこれらのストアから読み取り、3つのレコメンデーション列を表示します:リアルタイム人気ランキング、協調フィルタリング提案、製品プロファイルベースの提案。
6つのFlinkジョブはそれぞれロジックの一部を処理します:生ログ保存、ユーザー製品履歴、ユーザー興味検出(アクション間の時間間隔に基づく)、ユーザーパーソナ(色/国/スタイルの好み)、製品パーソナ(年齢層と性別)、およびRedisに保存された60秒のスライディングウィンドウ人気ボード。
製品間の類似度は2つの方法で計算されます:製品プロファイル特徴(色、国、スタイル)のコサイン類似度と、ユーザー製品履歴に基づく協調フィルタリング式です。Web UIはまた、人気ボードや1時間ごとのログ量などのリアルタイムメトリクスを表示する管理ダッシュボードも提供します。
リポジトリには、すべての依存関係(MySQL、HBase、Kafka、Redis、Flink)を起動し、コンパイル、ジョブの実行、テストデータの注入、Webサイトの起動を行うためのDocker Composeファイルとシェルスクリプトが含まれています。READMEには、localhostのIPv6問題、JDKバージョン制限、Dockerネットワーク内でFlinkジョブを実行してはならない理由など、一般的な落とし穴も文書化されています。
対象読者
Apache Flinkと最新のデータストアを使用した完全な動作するリアルタイムレコメンデーションパイプラインの例を見たい開発者やデータエンジニア。また、ストリーミング分析とオフラインスタイルのレコメンデーションアルゴリズムを単一のプロジェクトで組み合わせる方法を学びたい人にも役立ちます。
ハイライト
- 6つの異なるFlinkジョブがそれぞれ特定のレコメンデーションサブタスク(履歴、興味、パーソナ、人気)を処理します。
- 2つの類似度方法が実装されています:製品プロファイルコサイン類似度とアイテムベースの協調フィルタリング。
- リアルタイム人気計算は、5秒ごとにスライドする60秒のイベント時間ウィンドウを使用します。
- Docker Composeは、1つのスクリプトでスタック全体(MySQL、HBase、Kafka、Redis、Flink)を起動します。
- シェルスクリプトは、コンパイル、ジョブ送信、テストデータ生成、Webサイト起動を自動化します。
- 詳細なトラブルシューティングセクションでは、ネットワーク、JDK、初期化の問題をカバーしています。
- レコメンデーションページには、人気、協調フィルタリング、製品プロファイルベースの結果の3列が並んで表示されます。
- 管理ダッシュボードは、別のページでライブレコメンデーションメトリクスを表示します。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト