我正在使用Hadoop for Dummies学习Hadoop。我已成功运行thr第一步,如安装,创建HDFS和存储数据,运行Pig脚本等。 我创建了FlightsByCarries.jar文件。
当我运行书中给出的代码时,我收到一个错误:
[root@localhost totalmiles]# hadoop jar /home/tom/Desktop/totalmiles/FlightsByCarrier.jar FlightsByCarrier /user/root/airline-data/2008.csv /user/root/output/flightsCount
Exception in thread "main" java.lang.ClassNotFoundException: FlightsByCarrier
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:274)
at org.apache.hadoop.util.RunJar.main(RunJar.java:205)
有人可以帮我纠正一下吗?
答案 0 :(得分:0)
这是因为您的编译器没有在jar FlightByCarrier中获取主方法。您可能无法将文件复制到hdfs或文件路径不合适...请检查一次..然后尝试
答案 1 :(得分:0)
如果您在主类中使用任何软件包名称,则JAR文件无法找到主类名称,请在运行程序时指定完整名称和包。
例: hadoop jar FlightsByCarrier.jar com.dev.FlightsByCarrier / input / output
您还可以在创建JAR文件时包含主类。
选择路径后创建JAR文件,然后单击下一步 - >要求选择主类 - >浏览名称并选择 - >单击确定
在这种情况下运行没有类名的命令。
hadoop jar FlightsByCarrier.jar / input / output
希望这能解决你的问题。