PredictionIO 是一个开源的机器学习服务器框架,用Scala语言开发。它提供了简单的方式使用REST API来创建推荐引擎,也提供客户端SDK,包含REST API. 客户端SDK对Java, Python, PHP都适用。PredictionIO核心使用Apache Mahout.Apache Mahout是一个可扩展的机器学习应用,提供各种聚类,分类,过滤算法,可以在分布式的Hapoop集群上运行这些算法。不过它的官方文档感觉不太友好,配置的时候走了些弯路,本文简单分享一下配置过程。
1. 安装java
过程简单,不再赘述。
2. 下载PredictionIO
$ cd
$ mkdir PredictionIO
$ cd PredictionIO
$ pwd
/Users/ruifengshan/PredictionIO
$ wget http://download.prediction.io/PredictionIO-0.9.6.tar.gz
$ tar zxvf PredictionIO-0.9.6.tar.gz
设置环境变量:
$ PATH=$PATH:/Users/ruifengshan/PredictionIO/PredictionIO-0.9.6/bin; export PATH
3. 安装依赖
$ mkdir PredictionIO-0.9.6/vendors
3.1安装spark
$ wget http://d3kbcqa49mib13.cloudfront.net/spark-1.5.1-bin-hadoop2.6.tgz
$ tar zxvfC spark-1.5.1-bin-hadoop2.6.tgz PredictionIO-0.9.6/vendors
如果你打算将Apache Spark安装到其他位置,你必须编辑PredictionIO-0.9.6/conf/pio-env.sh
文件并切改变SPARK_HOME
变量,将它设置为你自己的Apache Spark安装的位置。
如果你打算使用PostgreSQL或者MySQL,你可以直接进行第4步。
4. 修改配置
修改PredictionIO-0.9.6/conf/pio-env.sh
文件中的如下内容:
PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta
PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL
PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event
PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL
PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model
PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL
PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc
PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio
PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio
PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio
改为:
PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta
PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=MYSQL
PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event
PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=MYSQL
PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model
PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=MYSQL
PIO_STORAGE_SOURCES_MYSQL_TYPE=jdbc
PIO_STORAGE_SOURCES_MYSQL_URL=jdbc:mysql://localhost/pio
PIO_STORAGE_SOURCES_MYSQL_USERNAME=pio
PIO_STORAGE_SOURCES_MYSQL_PASSWORD=pio
需要将jdbc:mysql://localhost/pio
改为你的数据库链接,用户名密码也改为你数据库的用户名密码。
4. 启动PredictionIO
4.1 启动 PredictionIO Event Server
因为我们打算使用Mysql,所以使用如下命令启动:
pio eventserver --