centOS上的Hadoop BigTop。无法运行MapReduce应用程序-FlightsByCarrier

centOS上的Hadoop BigTop。无法运行MapReduce应用程序-FlightsByCarrier,mapreduce,Mapreduce,我正在学习Hadoop,使用Hadoop制作假人。我已经成功地运行了thr的第一步,如安装、创建HDF和存储数据、运行Pig脚本等。 我已经创建了FlightsByCarries.jar文件 当我运行书中给出的代码时,我得到一个错误: [root@localhost totalmiles]# hadoop jar /home/tom/Desktop/totalmiles/FlightsByCarrier.jar FlightsByCarrier /user/root/airline-data/2

我正在学习Hadoop,使用Hadoop制作假人。我已经成功地运行了thr的第一步,如安装、创建HDF和存储数据、运行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)

有人能帮我纠正一下吗?

这是因为编译器没有在jar FlightsByCarrier中获取主方法。可能是您没有将文件复制到hdfs,或者您的文件路径不正确…请检查一次..然后重试

如果您的JAR文件找不到主类名,如果您在主类名中使用任何包名,请在运行程序时随包指定完整名称

例: hadoop jar FlightsByCarrier.jar com.dev.FlightsByCarrier/input/output

您还可以在创建JAR文件时包含main类

选择路径后创建JAR文件时,单击下一步-->要求选择主类-->浏览名称并选择-->单击确定

在这种情况下,运行不带类名的命令

hadoop jar FlightsByCarrier.jar/input/output

希望这能解决你的问题