我正在尝试运行WordCount example。但我面临着编制程序的问题。
我收到错误:
错误:包org.apache.hadoop.mapred不存在
执行后:
javac -classpath /usr/local/hadoop/share/hadoop/common/hadoop-common-2.7.3.jar -d wordcount_classes WordCount.java
我使用此tutorial设置了hadoop。 我还在stackoverflow 上查看了这个内容:question并在bin/hadoop classpath
中执行了/usr/local/hadoop
命令。这是我获得的输出:
/ usr / local / hadoop / etc / hadoop:/ usr / local / hadoop / share / hadoop / common / lib / *:/ usr / local / hadoop / share / hadoop / common / *:/ usr / local / hadoop / share / hadoop / hdfs:/ usr / local / hadoop / share / hadoop / hdfs / lib / *:/ usr / local / hadoop / share / hadoop / hdfs / *:/ usr / local / hadoop / share / hadoop / yarn / lib / *:/ usr / local / hadoop / share / hadoop / yarn / *:/ usr / local / hadoop / share / hadoop / mapreduce / lib / *:/ usr / local / hadoop / share / hadoop / mapreduce / *:/ contrib / capacity-scheduler / * .jar
但我不知道该怎么做或我的下一步应该是什么!请帮忙!
答案 0 :(得分:2)
您正在尝试使用众多hadoop依赖项jar(hadoop-common-x.x.x.jar)中的一个来编译源代码。包含错误消息中记录的mapred包的jar是hadoop-mapreduce-client-core jar。
我建议您使用Maven或Gradle等构建工具来构建源代码,因为它将为您管理传递依赖项。
或者继续手动调用javac,尝试这样的事情(未经测试):
javac -cp '/usr/local/hadoop/share/hadoop/common/*' \
-cp '/usr/local/hadoop/share/hadoop/hdfs/lib/*' \
-cp '/usr/local/hadoop/share/hadoop/hdfs/*' \
-cp '/usr/local/hadoop/share/hadoop/yarn/lib/*' \
-cp '/usr/local/hadoop/share/hadoop/yarn/*' \
-cp '/usr/local/hadoop/share/hadoop/mapreduce/lib/*' \
-cp '/usr/local/hadoop/share/hadoop/mapreduce/*' \
-d wordcount_classes WordCount.java