繁体   English   中英

Java:在Apache Hadoop中找不到PageRank算法的类

[英]Java: Class not found for PageRank algorithm in Apache Hadoop

我试图在Apache Hadoop(2.6.5)集群(1个主设备2个从属设备)中运行PageRank算法。 我正在此存储库中使用该程序-https: //github.com/danielepantaleone/hadoop-pagerank.git 我能够使用此命令编译所有源代码-

sudo javac -classpath ${HADOOP_CLASSPATH} -d ./build src/it/uniroma1/hadoop/pagerank/PageRank.java src/it/uniroma1/hadoop/pagerank/job1/PageRankJob1Mapper.java src/it/uniroma1/hadoop/pagerank/job1/PageRankJob1Reducer.java src/it/uniroma1/hadoop/pagerank/job2/PageRankJob2Mapper.java src/it/uniroma1/hadoop/pagerank/job2/PageRankJob2Reducer.java src/it/uniroma1/hadoop/pagerank/job3/PageRankJob3Mapper.java

我使用此命令sudo jar -cf build/pagerank.jar build/创建了jar文件。

我正在尝试像这样的wordcount示例一样运行程序-

sudo bin/hadoop jar hadoop-pagerank/build/pagerank.jar PageRank --
input /usr/local/hdfs/web-Google.txt --output /usr/local/hdfs-out-PR

有时我会收到这样的错误-

Exception in thread "main" java.lang.NoClassDefFoundError: PageRank (wrong name: it/uniroma1/hadoop
/pagerank/PageRank)

有时我会收到这样的错误- Exception in thread "main" java.lang.ClassNotFoundException: PageRank for different types of compilation.

我不确定我在做什么错。 有人可以在正确的步骤中帮助我在Hadoop中编译和运行程序吗? 我没有任何pom.xml文件,并且能够运行提供的wordcount示例jar。

您必须在类名称之前使用包名称,这意味着您必须使用: it.uniroma1.hadoop.pagerank.PageRank

而不是您命令中的PageRank 像这样 :

hadoop jar hadoop-pagerank/build/pagerank.jar it.uniroma1.hadoop.pagerank.PageRank --input /usr/local/hdfs/web-Google.txt --output /usr/local/hdfs-out-PR

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM