zoukankan      html  css  js  c++  java
  • 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,出现如下推荐界面

     

  • 相关阅读:
    算法第三章上机实践报告
    算法第3章作业
    算法第二章上机实验报告
    对二分法的理解和关于结对编程的看法
    轮播图终极版
    C语言II博客作业04
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    作业01
  • 原文地址:https://www.cnblogs.com/abc123456789/p/3504853.html
Copyright © 2011-2022 走看看