项目简介
本项目是一个基于 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】