java.lang.noclassdeffounderror:在hadoop集群上运行mahout示例

ogsagwnx  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(315)

我遵循的是kmeans clustring的mahout实际教程,我使用的代码与这里找到的相同:也使用相同的pom.xml。在使用eclipse的本地计算机上,每件事情都可以正常工作,因此我构建了jar文件(clustering-0.0.1-snapshot.jar),并在尝试使用以下命令运行它时将其带到集群(hortonworks 2.3): hadoop jar clustering-0.0.1-SNAPSHOT.jar com.digimarket.clustering.App (我给我的项目起了不同的名字)我得到了这个错误:
noclassdeffounderror:org/apache/mahout/common/distance/distancemeasure
我知道这是一个依赖性问题,我发现以前有这个问题的用户问了一些问题,但不明白他们是如何解决的。这里和这里
这是我的群集中mahout目录的内容:

ls /usr/hdp/2.3.4.0-3485/mahout/
bin
conf
doc
lib
mahout-examples-0.9.0.2.3.4.0-3485.jar
mahout-examples-0.9.0.2.3.4.0-3485-job.jar
mahout-integration-0.9.0.2.3.4.0-3485.jar
mahout-math-0.9.0.2.3.4.0-3485.jar
mahout-mrlegacy-0.9.0.2.3.4.0-3485.jar
mahout-mrlegacy-0.9.0.2.3.4.0-3485-job.jar

谢谢。

63lcw9qa

63lcw9qa1#

看起来您的集群上的代码没有可用的依赖项。
基于该项目中的pom.xml,您应该使用:

<properties>
  <mahout.version>0.5</mahout.version>
  <mahout.groupid>org.apache.mahout</mahout.groupid>
</properties>
...
<dependencies>
  <dependency>
    <groupId>${mahout.groupid}</groupId>
    <artifactId>mahout-core</artifactId>
    <version>${mahout.version}</version>
  </dependency>
  ...
</dependencies>

类org.apache.mahout.common.distance.distancemeasure包含在mahout-core-0.*.jar中,我有mahout-core-0.7.jar,这个类就在这里。

您可以下载该jar并将其包含在-libjars标志中,也可以将其放在hadoop类路径中。

相关问题