我正在运行我的hadoop工作,并且在找不到课程时失败了。总共4个java文件。
logProcessor.java
logMapper.java
logReducer.java
logParser.java
一切都在unix的com文件夹中,我有“package com;”在所有类的第一行
这意味着如果你执行以下命令 头-5 * java 你会看见 包com; 在所有4个文件中。
logProcessor是Driver类。所有文件都在unix上的“com”文件夹中。
ls -ltr com/
logProcessor.java
logMapper.java
logReducer.java
logParser.java
I compiled the java program and made a jar out of it.
hadoop jar /var/lib/hadoop-hdfs/xxxx/jarFiles/LogParser.jar com.LogProcessor /user/hdfs/flume/2015-03-30/03 /user/xxxx/output_xxx
它给出了以下错误:
Exception in thread "main" java.lang.ClassNotFoundException: com.RFCLogProcessor
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:270)
at org.apache.hadoop.util.RunJar.main(RunJar.java:201)
答案 0 :(得分:2)
首先,您需要在classpath中编写jar路径。将jar文件的目录路径写入.bashrc文件。
然后你可以使用下面的命令:
hadoop jar directorypath / yourjarname.jar packagename.mainclassname outputpath
答案 1 :(得分:1)
我所做的一切都是正确的。除了创建的类没有对它们执行权限
所以我做了
chmod -R 777 com /
然后再次使用它并使用相同的上述命令运行它并执行。