运行“基于 Apache Mahout 构建社会化推荐引擎”中例子遇到的问题

       下载了MovieSite这个包,解压导入Eclipse遇到很多问题。记录下步骤

       首先导入eclipse后,build path中引入的几个tomcat library路径不正确。需要根据你的tomcat路径,重新引入。还有需要下载mysql 驱动,我下载的是mysql-connector-java-5.1.10-bin.jar,导入build path。如果你是通过在eclipse中的tomcat plugin(com.sysdeo.eclipse.tomcat)来运行这个web程序,还需要将该驱动jar包拷贝一份到tomcat的lib目录下。

       然后修改tomcat的server.xml或者在拷贝一个context xml到conf/Catalina/localhost目录下。加入类似下面的内容

    <Context docBase="c:/MovieSite" path="/MovieSite" reloadable="true" >

      <Resource name="jdbc/movie"   //要与web.xml中的<res-ref-name>一致

auth="Container" 

type="javax.sql.DataSource" 

driverClassName="com.mysql.jdbc.Driver" 

url="jdbc:mysql://192.168.21.152/movie" 

username="root"     //your mysql account name

password="root"     // your mysql password

maxActive="100" 

maxIdle="30" 

maxWait="10000"/> 

      </Context>

       然后要根据table.sql的脚步创建4个table,再将movies.dat数据导入。接着在user表中自己插入一笔数据,因为例子没提供,但后面导入ratings.dat必须要有user表的userID父键关联。所以ID号以ratings中的userID为参照。因为ratings.dat中数据较多,而你不可能将ratings中的userID一一插入到user表(除非你有兴趣或者其它工具帮您插入),所以导入ratings.dat时,会报异常,只会导入在你user表中存在的userID作父键的数据。不用太计较,能看到例子的效果就行。

      最后启动tomcat,打开浏览器,输入http://localhost:8080/MovieSite,看到输入框,输入你的user email,密码可以不输。就可以看到内容了。

 

看到http://blog.csdn.net/softwarehe/article/details/7465151中将mahout-core-0.2换成mahout-core-0.5,问题更多,还会有代码编译错误,但也可以解决。

com.ibm.taste.example.movie.recommender包中所有代码都会提示错误,但主要是两种

一是类似ItemBasedRecommender类中的错误提示:

          The type ItemBasedRecommender must implement the inherited abstract method Recommender.recommend(long, int, IDRescorer), 

          The method recommend(long, int, IDRescorer) in the type Recommender is not applicable for the arguments (long, int, Rescorer<Long>)

       遇到这种状况,就将该方法屏蔽掉,然后重新加载未实现方法,同时将调用this.recommend(long ,  howMany Rescorer<Long> )改成调用this.recommend(long , int ,IDRescorer).

二是MovieDataModel类中提示:

         The constructor MySQLJDBCDataModel(DataSource, String, String, String, String) is undefined

         先添加变量public final static String TIMESTAMP_COLUMN = "timestamp";

        然后将super(lookupDataSource(dataSourceName), PERFERENCETABLE, USERID_COLUMN, ITEMID_COLUMN, PERFERENCE_COLUMN)改成super(lookupDataSource(dataSourceName), PERFERENCETABLE, USERID_COLUMN, ITEMID_COLUMN, PERFERENCE_COLUMN,TIMESTAMP_COLUMN); 

 就可以了。

 

  解决了编译问题,运行tomcat时可能还会报异常,需要另外两个jar:guava-r03.jar,mahout-math-0.5.jar。其它步骤和mahout-core-0.2一样

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值