PredictionIO 遇坑记

官方参考文档:

https://predictionio.apache.org/templates/javaecommercerecommendation/quickstart/

按照文档来,应该不会出现问题。

 

记录一下我遇到的问题:

ubuntu系统

(1)Mysql 或者 PostgreSQL,启动命令:pio eventserver &   【要认真呀 】

(2)我使用Mysql。Mysql的java驱动,默认是没有的,自己放一个,目录是:PredictionIO-0.13.0/lib,我的文件名称mysql-connector-java-5.1.37.jar。

(3)确定一下使用的是什么驱动,更改配置文件PredictionIO-0.13.0/conf/pio-env.sh 

删除掉不用的,设置好需要的。

#驱动的版本号,确保正确
SPARK_HOME=$PIO_HOME/vendors/spark-2.1.1-bin-hadoop2.6

POSTGRES_JDBC_DRIVER=$PIO_HOME/lib/postgresql-42.0.0.jar
MYSQL_JDBC_DRIVER=$PIO_HOME/lib/mysql-connector-java-5.1.37.jar

#数据库配置
 PIO_STORAGE_SOURCES_MYSQL_TYPE=jdbc
 PIO_STORAGE_SOURCES_MYSQL_URL=jdbc:mysql://XXXX:3306/pio
 PIO_STORAGE_SOURCES_MYSQL_USERNAME=XXX
 PIO_STORAGE_SOURCES_MYSQL_PASSWORD=XXX


#下面这几行,是因为报错,说没有这些key,我才加上的
 PIO_STORAGE_SOURCES__TYPE=jdbc
 PIO_STORAGE_SOURCES__URL=jdbc:mysql://XXXX:3306/pio
 PIO_STORAGE_SOURCES__USERNAME=XXX
 PIO_STORAGE_SOURCES__PASSWORD=XXX

不添加的话,报错“Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/exception/ExceptionUtils”?

(4)记得在数据库创建好数据库。【小细节,要注意】

(5)接收、查询事件的服务使用7070端口;推荐引擎使用8000端口。两个服务,两个服务,一个接收写数据,一个提供推荐服务,记住。

(6)新建一个引擎,加点数据。

(7)发现:接收数据的服务,OK,端口7070;提供查询的服务,OK,端口8000.

但是接收了新数据,如何生效呢?经过一个下午的排查和实验,发现,提交数据之后,需要手动执行buid、train、deploy,才能生效。也就是说,需要手动训练模型!! 这不要命了吗?!如何才能实时地预测呢?

(8)写一个定时器。发现crond是一个好东西。写一个训练模型的脚本,将这个脚本加入到crontab -e . * * * * * 是每分钟执行一次

(9)上面的定时器,在单台机器是可以的。 任务执行的间隔时间一定要大于任务执行本身需要的时间。我在这个坑里挣扎了一段时间。

(10) 单台机器训练模型,需要资源,需要计算能力,而且重启服务的时候,查询服务会中断的。如何解决?

我能想到的解决办法是:建立一个集群。将训练模型的计算任务分发出去,训练完成之后,将模型的各个片段收集起来,整理为一个整体模型,然后再对外提供服务。以此循环。 数据量大,模型大,计算量也就大,需要的集群也大。

目前还是我一个人做,这些搞不了了。也没做过大数据。

 

 

下面的不用看了

(1)开始下载了PredictionIO-0.14.0-SNAPSHOT,坑死自己。哎~~~      用正式版本!!!

(2)有个报错,我还去看了源码,https://github.com/actionml/PredictionIO/blob/master/data/src/main/scala/io/prediction/data/storage/Storage.scala

我竟然接触到scala,😓

(3)一直看到,https://groups.google.com/forum/#!topic/predictionio-user/QtXnIOkMVKo, 用了pio version 才意识到我用的是SNAPSHOT!!

 

其他

为了以后节省那么一点儿时间,这里列几个链接。

  1. 安装。https://predictionio.apache.org/install/
  2. 推荐引擎。https://predictionio.apache.org/start/download/
  3. SDK https://predictionio.apache.org/sdk/java/ 
  4. 依赖包 https://search.maven.org/search?q=org.apache.predictionio
  5. 示例 https://github.com/apache/predictionio-sdk-java
  6. 训练模型 https://predictionio.apache.org/deploy/
  7. 监控。https://predictionio.apache.org/deploy/monitoring/
  8. 分析数据。https://predictionio.apache.org/datacollection/analytics/
  9. 修改端口 pio deploy --port 8123
  10. 实时训练模型。接收到新的用户行为数据,训练模型之后才能看到效果。
  11. 重新部署脚本 https://github.com/apache/predictionio/tree/develop/examples/redeploy-script 
  12. https://predictionio.apache.org/deploy/

 

展开阅读全文

没有更多推荐了,返回首页