littlebot
Published on 2025-04-02 / 1 Visits
0

【源码】基于 Apache Spark 和 Elasticsearch 的可伸缩推荐系统

项目简介

本项目是一个基于 Apache Spark 和 Elasticsearch 的可伸缩推荐系统。借助存储在 Elasticsearch 中的用户行为数据,利用 Spark 训练协同过滤推荐模型,将训练好的模型保存到 Elasticsearch,再通过 Elasticsearch 基于该模型提供实时推荐。系统具备离线训练、在线推荐功能,还能将推荐与搜索和内容过滤相结合。

项目的主要特性和功能

  • 数据导入与索引:运用 Elasticsearch Spark 连接器把用户行为数据导入 Elasticsearch 并建立索引。
  • 模型训练:将行为数据加载到 Spark DataFrames 中,使用 Spark 的机器学习库 (MLlib) 训练协同过滤推荐系统模型。
  • 模型导出:把训练后的模型导出到 Elasticsearch 中。
  • 实时推荐:使用自定义 Elasticsearch 插件,计算个性化用户和类似条目推荐,同时结合搜索和内容过滤。

安装使用步骤

1. 设置 Elasticsearch

bash $ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.0.tar.gz $ tar xfz elasticsearch-5.3.0.tar.gz $ cd elasticsearch-5.3.0 安装 Elasticsearch 矢量评分插件(此处原文档未给出具体命令)。 bash $ ./bin/elasticsearch $ pip install elasticsearch

2. 下载 Elasticsearch Spark 连接器

bash $ wget http://download.elastic.co/hadoop/elasticsearch-hadoop-5.3.0.zip $ unzip elasticsearch-hadoop-5.3.0.zip 确保 elasticsearch-spark-20_2.11-5.3.0.jar 文件在类路径上。

3. 下载 Apache Spark

bash $ wget https://downloads.apache.org/spark/spark-2.2.0/spark-2.2.0-bin-hadoop2.7.tgz $ tar xfz spark-2.2.0-bin-hadoop2.7.tgz $ pip install numpy

4. 数据准备

准备用户行为数据集,数据格式参考 Movielens Small 数据集

5. 代码结构

  • __init__.py:定义包中要引用的属性和方法。
  • dataset.py:使用 Spark 读取原始数据文件,转换为 Dataframe。
  • esoperation.py:创建 Elasticsearch 索引,用于保存模型数据和元数据。
  • prediction.py:基于 Elasticsearch 中的数据,通过矢量评分插件进行预测。
  • trainmodel.py:用于模型训练,核心算法采用 ALS。
  • recommender.py:构建从数据准备、模型训练到完成预测的 pipeline。

6. 推荐过程

bash $ python recommender.py 在线推荐:通过调用 Elasticsearch 的 RESTful 接口获取推荐结果。

7. 运行 Jupyter Notebook

bash $ pip install jupyter PYSPARK_DRIVER_PYTHON="jupyter" PYSPARK_DRIVER_PYTHON_OPTS="notebook" ../spark-2.2.0-bin-hadoop2.7/bin/pyspark --driver-memory 4g --driver-class-path ../../elasticsearch-hadoop-5.3.0/dist/elasticsearch-spark-20_2.11-5.3.0.jar 打开并运行 pipeline 示例

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】