我已经在我的系统上安装了oozie,还安装了pig。现在我希望ozzie从pig运行工作流,pig安装在我的系统上,而不是从ozzie共享库。请帮助,因为我得到以下错误:
2015-08-19 17:15:25,724 WARN PigActionExecutor:523 - SERVER[edb-node1] USER[hduser] GROUP[-] TOKEN[] APP[pig-wf] JOB[0000002-150819170943510-oozie-hdus-W] ACTION[0000002-150819170943510-oozie-hdus-W@pig-node] Launcher ERROR, reason: Main class [org.apache.oozie.action.hadoop.PigMain], exception invoking main(), java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.PigMain not found
2015-08-19 17:15:25,728 WARN PigActionExecutor:523 - SERVER[edb-node1] USER[hduser] GROUP[-] TOKEN[] APP[pig-wf] JOB[0000002-150819170943510-oozie-hdus-W] ACTION[0000002-150819170943510-oozie-hdus-W@pig-node] Launcher exception: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.PigMain not found
java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.PigMain not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2074)
at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:234)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:450)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
at org.apache.hadoop.mapred.LocalContainerLauncher$EventHandler.runSubtask(LocalContainerLauncher.java:370)
at org.apache.hadoop.mapred.LocalContainerLauncher$EventHandler.runTask(LocalContainerLauncher.java:295)
at org.apache.hadoop.mapred.LocalContainerLauncher$EventHandler.access$200(LocalContainerLauncher.java:181)
at org.apache.hadoop.mapred.LocalContainerLauncher$EventHandler$1.run(LocalContainerLauncher.java:224)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.PigMain not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1980)
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2072)
... 13 more
2条答案
按热度按时间ldfqzlk81#
您得到的错误消息清楚地表明您有一个不完整的类路径。
那是因为
pig
命令行做了很多事情,其中之一就是在调用PigMain
java类。但是oozie直接调用java类;类路径问题应该被处理或者。。。通过pig sharelib,激活时
或者,作为一个知识渊博的java开发人员,您可以选择不使用默认的方式来运行pig,这样您就知道自己在做什么了,对吧?
在问你的问题之前,你有没有在stackoverflow(和/或google)上用以下关键字搜索过?结果可能证明是有用的。
oozie pig自定义类路径
5f0d552i2#
在上面的例子中,您已经检查了是否能够访问pig cli{grunt shell},或者是否能够在不使用oozie的情况下手动运行pig脚本。
当您试图通过oozie使用时,happend is pig jar是不可访问的,避免这种问题的最好方法是使用oozie--sharelib,但正如您所提到的,您不希望使用sharedlib也可以访问它,然后使用一些备用的情况,如:
更新hadoop类路径中的pig home路径。这将帮助mr在每次oozie向mr提交请求时获取hdfs临时位置中的jar列表。
在bashprofile中更新pig home{如果pig在使用未找到的命令访问grant shell时显示错误}。
希望这些能对你有所帮助。