mahout入门实例-基于 Apache Mahout 构建社会化推荐引擎-实战(参考IBM)

基于 Apache Mahout 构建社会化推荐引擎-实战(参考IBM)

 文章地址:http://www.ibm.com/developerworks/cn/java/j-lo-mahout/

由于第一次接触mahout等,有些地方理解不对烦请指出!

步骤:

Windows版:

1)  首先安装JDK(1.6及以上)

2)  Ant(1.7及以上)

http://www.apache.org/dist/ant/binaries/下载bin版,解压,然后添加系统环境变量,如下

 

 

然后运行cmd,输入ant,出现如下界面说明环境变量配置成功

 

3)  下载maven

因为mahout是利用maven来进行管理的,maven是一种项目构建工具,可以对多个依赖项目进行管理,当你导入利用maven描述的项目时,就会把其描述的所有依赖项目全部导入。另外他还有一些管理的资源库,你不需要自己导入jar包,只要你在pom.xml中做了描述,maven就会自动从自己的资源库上帮你把jar下载并导入到你的工程中,具体可以上网查下maven的项目构建方法。

http://maven.apache.org/download.cgi下载maven(我的是apache-maven-3.1.1-bin.zip),解压,添加环境变量,如下

 

 

运行cmd,输入mvn –version,如下即可

 

下面最好还配置下maven的本地仓库,当maven在本地仓库找不到依赖包,才去apache的中央仓库找。

打开maven的conf目录下的settings.xml文件,如下图修改

 

效果如下

 

接下来还需要在eclipse中下载m2eclipse插件,由于因为国内经常被墙,所以这里介绍离线安装方式。

网上下载eclipse的maven插件离线包(我下的是eclipse-maven3-plugin.7z),解压,然后在eclipse的根目录下创建一个links文件夹和一个maven-plugin文件夹,将刚解压的maven插件的features和plugins文件夹放到maven-plugin文件夹下,并在links文件夹下新建一个maven.link文件,输入内容path=maven插件的路径(这里就是maven-plugin的路径,注意要是绝对路径),如下图

 

重启eclipse就发现maven已出现在列表中。

接下来还需要在eclipse中配置下maven。

选择window – preferences,选择maven,点击右侧的add,将maven的安装目录添加进去,如下图

 

点击确定后,再点击User Settings,将其中的路径改成maven目录下conf文件夹下的settings.xml,如下图所示

 

到此maven插件安装成功。

点击window – show view – console,此时console下就会有个maven控制台。

 

Maven常用命令:

Maven在使用过程中时常遇到下载不了jar包的问题,于是需要手动下载好jar包,然后执行mvn install命令安装。如下命令

mvn install:install-file -Dfile=jar包的位置 -DgroupId=jar包的groupId -DartifactId=jar包的artifactId -Dversion=jar包的version -Dpackaging=jar

首先下载要安装的jar文件(如maven-resources-plugin-2.5.jar),然后执行如上命令,具体见下图:

 

安装模板包,同上:

mvn install:install-file -DgroupId=org.apache.maven.archetypes -DartifactId=maven-archetype-quickstart -Dversion=1.1 -Dpackaging=jar -Dfile=maven-archetype-quickstart-1.1.jar(换成所在的路径),如下图所示

 

mvn dependency:tree

查看依赖树。目前没用到。

mvn clean,mvn install等

maven构建的生命周期默认有以下几个阶段:1)validate. 2)compile. 3)test. 4)package. 5)integration-test. 6)verify. 7)install. 8)deploy.

当执行mvn deploy命令它会执行deploy之前所有的阶段,包括deploy阶段。

执行mvn integration-test它会执行阶段1),2),3),4),5)阶段。

Mvn clean install会先执行mvn clean,然后再执行mvn install,相当于更新项目中的依赖包后再install。

4)  构建mahout

这里要说明一下mahout的运行版本。

mahout-0.5, mahout-0.6, mahout-0.7,是基于hadoop-0.20.2x的。

mahout-0.8, mahout-0.9,是基于hadoop-1.1.x的。

mahout-0.7,有一次重大升级,去掉了多个算法的单机内存运行,并且了部分API不向前兼容。

Mahout提供了已构建好的版本(如mahout-distribution-0.8.zip)和源码版本(mahout-distribution-0.8-src.zip),下面我们使用源码包。要获取mahout源码包,有如下两种方法

方法1:http://mahout.apache.org下载mahout(mahout-distribution-0.8-src.zip),解压

方法2:svn,地址 http://svn.apache.org/repos/asf/mahout/trunk

方法2使用截图如下.

 

下载源码包后,接下来开始构建mahout,同样有两种方式,使用maven命令和利用eclipse的maven插件(分别对应着上面的maven安装和eclipse的maven插件安装两种方式)。

为了方便起见,下面以Eclipse为例,在eclipse中,右键import,选择Existing maven project,如下图

 

选择刚解压的mahout的源码目录

 

等待eclipse解析后(电脑有点慢,花了好久),点击结束,这样一个项目就导入进去了,下面进入一个实例。

5)  参考ibm的一篇“基于 Apache Mahout 构建社会化推荐引擎”的文章

下载文章最后的src.zip,解压,用eclipse导入,项目目录如下

 

接下来还需要额外导入4个jar包,分别是servlet-api.jar, jasper.jar, jsp-api.jar 以及mysql-connector-java-***-bin.jar,前3个都可以在tomcat的libs下找到,最后一个需要去mysql的网站去下载mysql-connector-java-5.1.28.zip,从压缩包中解压出jar包放到tomcat下lib目录下,

 

在eclipse中右键项目选择Build Path,添加这4个包,同时要删除同时删除因为路径无效的jar包

 

此时eclipse中的项目目录如下

 

将MovieSite下的movie全部复制到tomcat下的webapps目录下,开启tomcat,在浏览器中输入localhost:8080/movie,打开如下图

 

此时如果登陆,肯定失败。因为现在数据库中没有任何数据,既没有user登录账号,也没有将数据集载入数据库。因此无法登陆

下载http://www.cnblogs.com/abelstronger/articles/2093847.html中的src文件(3个java源文件),导入到eclipse中的MovieSite项目,如下

 

接下来还需要修改这3个java中的错误

首先需要更改package名,然后发现缺少DBUtil.getJDBCConnection()函数,于是需要去com.ibm.taste.example.movie.utils包下的DBUtil.java文件中添加如下两个函数

public static  Connection getJDBCConnection()

{

    String driverClassName = "com.mysql.jdbc.Driver";

    String url = "jdbc:mysql://localhost/movie";

    String username = "username";     //修改为你自己用户名,如root

    String password = "password";      //修改为你自己密码,如root

    Connection conn = null;

    try {

        Class.forName(driverClassName);

        conn = DriverManager.getConnection(url, username, password);

    } catch (ClassNotFoundException e) {

        e.printStackTrace();

    } catch (SQLException e) {

        e.printStackTrace();

    }

    return conn;

}

public static void closeConnection(Connection conn)

{

    if(conn!=null)

    {

        try {

            conn.close();

        } catch (SQLException e) {

            e.printStackTrace();

        }

    }

}

效果如下

 

使用ctrl+shift+o将DriverManager导入即可,修改下函数参数,最终如下

 

接下来还需要修改ImportMovies.java、ImportRatings.java以及ImportUsers.java,具体如下

 

 

 

接下来需要安装mysql,然后新建一个连接(这里随便取名了localhost)和一个数据库叫movie。

运行源码中com.ibm.taste.example.movie.init包中tables.sql,如下图

 

运行完结果就创建出如上4张表。

依次运行ImportMovies.java、ImportRatings.java以及ImportUsers.java,注意顺序。

开始运行ImportMovies.java总是报错“错误: 找不到或无法加载主类”,右键项目,选择Build Path,把里面有问题的jar都remove,同时把刚添加的那4个包也remove,将4个包复制到项目WEB-INF下lib目录中,然后再如上添加Build Path。

再次运行ImportMovies.java,运行完就可以发现movies表中已经增加了很多数据。

在运行ImportRatings.java的时候,因为填充movie_preference这张表的时候用到了users表的外键,而users表空的,所以可能会报错,所以需要将与users表的外键去掉,

 

运行ImportRatings.java。

注:如果有报错如下

 

则报错的原因通常认为的内存不足,java虚拟机内存不够用。

最后运行ImportUsers.java,到此数据库数据准备完成。

最后将MovieSite下的movie文件夹 复制到tomcat下的webapps下,同时修改tomcat/conf下的server.xml,在</Host>前增加如下一段

<Context path="/MovieSite" docBase="D: ecommendedapache-tomcat-7.0.47webappsmovie"                

debug="0" reloadable="true">

            <Resource name="jdbc/movie" auth="Container" type="javax.sql.DataSource"

                    username="root"

                    password="root"

                    driverClassName="com.mysql.jdbc.Driver"

                    url="jdbc:mysql://localhost:3306/movie"

                    maxActive="15"

                    maxIdle="7"

                    defaultTransactionIsolation="READ_COMMITTED"

                    validationQuery="Select 1" />

</Context>

效果如下

 

到此大功告成。下面启动tomcat,在浏览器中输入http://localhost:8080/MovieSite/,效果如下

 

随便输入用户名(如test@gmail.com),点login,出现如下推荐界面

 

原文地址:https://www.cnblogs.com/abc123456789/p/3504853.html