`
li.oo
  • 浏览: 50473 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

运行“基于 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一样

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics