欢迎喜欢深入了解推荐系统和mahout的兄弟加入群 推荐系统之Mahout 135918911
一直在学习mahout,工作中使用的是0.7跑算法,进行测试,但是在使用maven导入eclipse中构建的时候出现了问题,
首先由于m2e的lifeStyle覆盖问题,两个插件不能使用,如下图
m2e插件现在已经被eclipse托管,在看eclipse官方网站看过文档后终于找到解决方案,
解决方案如下:打开我们出现问题的pom文件
例如 mahout-core下的pom文件,出错的地方,表示m2e不知道怎么处理该插件(M2E plugin execution not covered)
鼠标放到错误地方会出现
选择第二项Mark goal run as .....,如果第三项(Discover new m2e connectors)能解决最好,有的时候eclipse会出现一些connectors更新,不过很少,大多数都是使用第二种方法解决,选择后我们会看见错误提示消失
同理mahout-examples下的pom文件也这样解决如下图
同理 mahout-integration下的pom文件也这样解决如下图
同理mahout-math下的pom文件也这样解决如下图
mahout-math的pom build中插件配置是存在问题,我们最后在解决这个问题,下面继续maven问题的解决
我们如下图操作
然后
我们打开lifecycle Mapping的配置文件将全部的
<action >
<ignore />
</action >
换成
<action>
<execute/>
</action >
或者直接将下面粘贴进去
<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<versionRange>1.6</versionRange>
<goals>
<goal>run</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute/>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<versionRange>2.1</versionRange>
<goals>
<goal>copy-dependencies</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute/>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-collection-codegen-plugin</artifactId>
<versionRange>1.0</versionRange>
<goals>
<goal>generate</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute/>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<versionRange>1.6</versionRange>
<goals>
<goal>run</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute/>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<versionRange>2.1</versionRange>
<goals>
<goal>copy-dependencies</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute/>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-collection-codegen-plugin</artifactId>
<versionRange>1.0</versionRange>
<goals>
<goal>generate</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute/>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
注意红色部分,默认是忽略而不是执行,需要修改成执行,或者把以上直接拷贝过去
上面的maven-antrun-plugin,mahout-collection-codegen-plugin插件我们设置的都是执行
记得保存文件,然后在我们打开lifecycle Mapping的配置文件的配置菜单上重载红色框框下面按钮
前面说到mahout-math pom中 build配置是存在问题的,
木配置把生成的类包的存放目录添加进classpath中去
(生成路径>${project.build.directory}/generated-sources ,测试目录${project.build.directory}/generated-test-sources)
如果目录不同,请自己对应。
<configuration>
<!--<mainExcludes>-->
<!--<mainExclude>**/AbstractBooleanList.java</mainExclude>-->
<!--<mainExclude>**/BooleanArrayList.java</mainExclude>-->
<!--<mainExclude>**/BooleanBufferConsumer.java</mainExclude>-->
<!--</mainExcludes>-->
<!--<testExcludes>-->
<!--<testExclude>**/BooleanArrayListTest.java</testExclude>-->
<!--</testExcludes>-->
<outputDirectory>${project.build.directory}/generated-sources/mahout</outputDirectory>
<!--<mainExcludes>-->
<!--<mainExclude>**/AbstractBooleanList.java</mainExclude>-->
<!--<mainExclude>**/BooleanArrayList.java</mainExclude>-->
<!--<mainExclude>**/BooleanBufferConsumer.java</mainExclude>-->
<!--</mainExcludes>-->
<!--<testExcludes>-->
<!--<testExclude>**/BooleanArrayListTest.java</testExclude>-->
<!--</testExcludes>-->
<outputDirectory>${project.build.directory}/generated-sources/mahout</outputDirectory>
<testOutputDirectory>${project.build.directory}/generated-test-sources/mahout</testOutputDirectory>
</configuration>
新增多个java文件源码包,maven本身是不支持的,我们这里需要一个插件来解决这个问题
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated-sources/mahout</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-test-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated-test-sources/mahout</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated-sources/mahout</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-test-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated-test-sources/mahout</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
或者我们直接粘贴0.8版本的build配置,0.8修正了这个问题,下面是0.8的配置
<build>
<defaultGoal>install</defaultGoal>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-collection-codegen-plugin</artifactId>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!--<mainExcludes>-->
<!--<mainExclude>**/AbstractBooleanList.java</mainExclude>-->
<!--<mainExclude>**/BooleanArrayList.java</mainExclude>-->
<!--<mainExclude>**/BooleanBufferConsumer.java</mainExclude>-->
<!--</mainExcludes>-->
<!--<testExcludes>-->
<!--<testExclude>**/BooleanArrayListTest.java</testExclude>-->
<!--</testExcludes>-->
<outputDirectory>${project.build.directory}/generated-sources/mahout</outputDirectory>
<testOutputDirectory>${project.build.directory}/generated-test-sources/mahout</testOutputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated-sources/mahout</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-test-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated-test-sources/mahout</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<!-- create test jar so other modules can reuse the math test utility classes. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-source-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
<configuration>
<appendedResourcesDirectory>../src/main/appended-resources</appendedResourcesDirectory>
<resourceBundles>
<resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>
</resourceBundles>
<supplementalModels>
<supplementalModel>supplemental-models.xml</supplementalModel>
</supplementalModels>
</configuration>
</plugin>
</plugins>
</build>
<defaultGoal>install</defaultGoal>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-collection-codegen-plugin</artifactId>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!--<mainExcludes>-->
<!--<mainExclude>**/AbstractBooleanList.java</mainExclude>-->
<!--<mainExclude>**/BooleanArrayList.java</mainExclude>-->
<!--<mainExclude>**/BooleanBufferConsumer.java</mainExclude>-->
<!--</mainExcludes>-->
<!--<testExcludes>-->
<!--<testExclude>**/BooleanArrayListTest.java</testExclude>-->
<!--</testExcludes>-->
<outputDirectory>${project.build.directory}/generated-sources/mahout</outputDirectory>
<testOutputDirectory>${project.build.directory}/generated-test-sources/mahout</testOutputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated-sources/mahout</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-test-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated-test-sources/mahout</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<!-- create test jar so other modules can reuse the math test utility classes. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-source-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
<configuration>
<appendedResourcesDirectory>../src/main/appended-resources</appendedResourcesDirectory>
<resourceBundles>
<resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>
</resourceBundles>
<supplementalModels>
<supplementalModel>supplemental-models.xml</supplementalModel>
</supplementalModels>
</configuration>
</plugin>
</plugins>
</build>
更新配置
或者我们直接把下面改好的配置替换原有build配置(下面的是0.8的配置) ,建议还是使用上面第一种
运行maven插件 clean install -Dmaven.test.skip=true -e -X
下面是apache的一个下载正式版本的依赖,对有些人可能有用
<repository>
<id>apache.releases</id>
<name>Apache Snapshot Repository</name>
<url>https://repository.apache.org/service/local/repositories/releases/content/</url>
</repository>
<id>apache.releases</id>
<name>Apache Snapshot Repository</name>
<url>https://repository.apache.org/service/local/repositories/releases/content/</url>
</repository>
相关推荐
mahout-core-0.7.jar,注意版本hadoop-1.0.x,eclipse-3.7。(mahout0.7不支持hadoop-2.2),由mahout-distribution-0.7.tar.gz源码构建生成jar包,可以直接引入。
mahout 0.7 src, mahout 源码包, hadoop 机器学习子项目 mahout 源码包
总结,Apache Mahout 0.7是机器学习领域的重要资源,其源码提供了深入理解算法实现的机会。通过研究源码,开发者不仅可以学习到机器学习的基本原理,还能掌握如何在实际项目中应用这些算法。同时,结合Apache Spark...
mahout-integration-0.7mahout-integration-0.7mahout-integration-0.7mahout-integration-0.7
“mahout1.0编译包”是指Apache Mahout机器学习库的一个特定版本,已经针对Hadoop 2进行了优化和编译。Mahout是一个流行的数据挖掘工具,它提供了各种算法来实现推荐系统、分类和聚类。这里的“1.0”可能指的是在...
本文将深入探讨如何解决这个问题,确保成功编译并生成JAR包。 首先,了解Maven的工作原理至关重要。Maven是一个项目管理工具,它通过读取项目配置文件(pom.xml)来管理项目的构建、报告和文档生成。在编译Mahout ...
mahout 中的类库解析,API,是学习mahout的好帮手
用于测试mahout中的决策树 ,即Partial Implementation用到的测试jar包。所谓的测试其实也只是把相应的数据可以打印出来,方便单机调试,理解算法实现原理而已。
在命令行中输入`mahout`,如果系统能够列出Mahout的所有可用命令,那么恭喜你,Mahout已经成功安装。 六、使用Mahout 现在你可以开始尝试使用Mahout的一些基本功能。例如,你可以使用推荐系统算法来处理intro.csv...
文档强调使用特定版本的软件栈是成功运行Mahout Taste Webapp的关键。文档中明确指出,需要使用JDK 1.6、Maven 3.0.5和Mahout 0.5版本。这是因为不同版本之间的兼容性问题可能导致运行时出现各种问题,比如依赖冲突...
在给定的压缩包中,包含了`mahout-distribution-0.5`版本,这个版本的Mahout已经包含了运行K-Means所需的所有jar包,用户可以直接使用而无需自行编译。 **使用Mahout的步骤** 1. **配置环境**:确保已经安装了Java...
运行博客推荐程序需要注意的地方: 1. 打开mysql,增加blog数据库;... 2. 修改blog.xml(和Readme.txt同目录)的docBase为本地目录,放在tomcat的conf\...版本:Spring3+Struts2+Hibernate3+Hadoop1.0.4+Mahout0.7+Mysql5
”这表明提供的压缩包可能包含了一系列的jar文件,这些文件是Mahout 0.9版的二进制发行版,可以直接添加到Java项目中,无需进行编译。开发者可以通过将这些jar文件添加到项目的类路径(classpath)来利用Mahout的...
这个压缩包包含的是Mahout项目不同版本的核心库,分别是mahout-core-0.9.jar、mahout-core-0.8.jar和mahout-core-0.1.jar。这些版本的差异在于功能的完善、性能的优化以及对新特性的支持。 1. **Mahout核心功能**:...
《Apache Maven与Mahout实战:基于maven_mahout_template-mahout-0.8的探索》 Apache Maven是一款强大的项目管理和依赖管理工具,广泛应用于Java开发领域。它通过一个项目对象模型(Project Object Model,POM)来...
总结来说,"apache-mahout-distribution-0.11.0-src.zip"是一个宝贵的资源,它不仅包含了一个强大机器学习库的源代码,还为开发者提供了一个深入了解和定制机器学习算法的机会。无论你是想研究算法细节,还是希望在...
总结来说,“hadoop2.7.3+mahout0.9问题集”主要涵盖了版本兼容性、环境配置、编译构建、数据处理、任务执行和算法应用等多个方面的问题。通过深入理解和实践,我们可以有效地解决这些问题,充分利用Hadoop和Mahout...