【发布时间】:2015-06-07 18:20:52
【问题描述】:
我是 hadoop 新手。我正在使用猪 0.14.0 和 hadoop 1.2.1。我已经在本地和 map reduce 模式下成功地从 grunt shell 和 pig 批处理脚本运行了 pig。现在我正在尝试从 Java 中的嵌入式 pig 运行 pig。 当我在 Eclipse 中编译代码时,出现以下错误:
线程“主”java.lang.NoClassDefFoundError 中的异常: org/apache/commons/logging/LogFactory 在 org.apache.pig.impl.util.PropertiesUtil.(PropertiesUtil.java:34) 在 org.apache.pig.PigServer.(PigServer.java:202) 在 test.main(test.java:6) 引起:java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 在 java.net.URLClassLoader$1.run(URLClassLoader.java:366) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:425) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 3 更多
import org.apache.pig.ExecType;
import org.apache.pig.PigServer;
public class test {
public static void main(String[] args) {
try {
PigServer pigServer = new PigServer(ExecType.MAPREDUCE);
runQuery(pigServer);
}catch(Exception e) {
e.printStackTrace();
}
}
public static void runQuery(PigServer pigServer) {
try {
pigServer.registerQuery("input1 = LOAD '/mydata/wct.txt' as (line:chararray);");
pigServer.registerQuery("words = foreach input1 generate FLATTEN(TOKENIZE(line)) as word;");
pigServer.registerQuery("word_groups = group words by word;");
pigServer.registerQuery("word_count = foreach word_groups generate group, COUNT(words);");
pigServer.registerQuery("ordered_word_count = order word_count by group desc;");
pigServer.registerQuery("store ordered_word_count into '/mydata/wct';");
} catch(Exception e) {
e.printStackTrace();
}
}
}
请帮助我。提前致谢。
【问题讨论】:
标签: java eclipse hadoop mapreduce apache-pig