您好我是新手级联并遵循“使用级联的企业数据工作流程”一书。 我检查了hadoop 1.0.4并下载了级联2.1.6。我使用netbeans IDE设置所有jar文件。
代码:
package main.java.impatient;
import java.util.Properties;
import cascading.flow.Flow;
import cascading.flow.FlowDef;
import cascading.flow.hadoop.HadoopFlowConnector;
import cascading.pipe.Pipe;
import cascading.property.AppProps;
import cascading.scheme.hadoop.TextDelimited;
import cascading.tap.Tap;
import cascading.tap.hadoop.Hfs;
import cascading.tuple.Fields;
public class
Main
{
public static void
main( String[] args )
{
String inPath = args[ 0 ];
String outPath = args[ 1 ];
Properties properties = new Properties();
AppProps.setApplicationJarClass( properties, Main.class );
HadoopFlowConnector flowConnector = new HadoopFlowConnector( properties );
// create the source tap
Tap inTap = new Hfs( new TextDelimited( true, "\t" ), inPath );
// create the sink tap
Tap outTap = new Hfs( new TextDelimited( true, "\t" ), outPath );
// specify a pipe to connect the taps
Pipe copyPipe = new Pipe( "copy" );
// connect the taps, pipes, etc., into a flow
FlowDef flowDef = FlowDef.flowDef()
.addSource( copyPipe, inTap )
.addTailSink( copyPipe, outTap );
// run the flow
flowConnector.connect( flowDef ).complete();
}
}
这是错误:
Exception in thread "main" cascading.flow.FlowException: step failed: (1/1) ...ka/cascading/part1/output, with job id: job_201310020226_0004, please see cluster logs for failure messages
at cascading.flow.planner.FlowStepJob.blockOnJob(FlowStepJob.java:210)
at cascading.flow.planner.FlowStepJob.start(FlowStepJob.java:145)
at cascading.flow.planner.FlowStepJob.call(FlowStepJob.java:120)
at cascading.flow.planner.FlowStepJob.call(FlowStepJob.java:42)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:680)
Hadoop作业错误:
java.io.IOException: Split class cascading.tap.hadoop.io.MultiInputSplit not found
at org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:387)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:412)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:372)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
at org.apache.hadoop.mapred.Child.main(Child.java:249)
Caused by: java.lang.ClassNotFoundException: cascading.tap.hadoop.io.MultiInputSplit
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:249)
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:820)
at org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:385)
... 7 more
任何人都可以帮助我
谢谢
答案 0 :(得分:0)
与Cascading + libjars = ClassNotFoundException. Sometimes类似,
我在 hadoop-env.sh 中添加了以下内容并解决了
export HADOOP_CLASSPATH="path_to_cascading_libs/lib/*":$HADOOP_CLASSPATH
答案 1 :(得分:0)
你最好不要自己下载和设置classpath,这对于管理java项目模块依赖项是不利的。您甚至无需安装或配置hadoop和级联。
尝试教程代码的最佳方法是
第1步:清理Hadoop和Cascading的类路径,这可能会导致冲突。
第2步:使用gradle安装必需的依赖项(不耐烦的项目中的默认构建工具)
cd $your_workspace
git clone git@github.com:Cascading/Impatient.git
cd Impatient
gralde install
第3步:您最好使用IDE eclipse
(http://eclipse.org/)或IntelliJ IDEA
,因为不耐烦的项目默认添加了idea和eclipse插件。此类任务将下载所有必需的依赖项,包括级联和hadoop相关的包,并创建IDE指定的项目文件。
gradle idea
或
gradle eclipse
示例输出:
$ gradle idea
:ideaModule
:ideaProject
:ideaWorkspace
:idea
:part1:ideaModule
Download http://repo1.maven.org/maven2/commons-logging/commons-logging/1.1/commons-logging-1.1.pom
Download http://repo1.maven.org/maven2/org/apache/hadoop/hadoop-core/1.1.2/hadoop-core-1.1.2.pom
...
BUILD SUCCESSFUL
Total time: 1 mins 30.579 secs
您可能会找到一些IDE指定的项目文件(例如想法):
$ ls -al impatient.*
-rw-r--r-- 1 wheel 521 Oct 26 07:18 impatient.iml
-rw-r--r-- 1 wheel 4430 Oct 26 07:18 impatient.ipr
-rw-r--r-- 1 wheel 9299 Oct 26 07:18 impatient.iws
第5步:import existing project/module
使用IDE构思或eclipse。
当然,我认为eclipse / idea / netbeans都有自己的插件支持gradle
个项目。
希望得到帮助。
答案 2 :(得分:0)
你的罐子可能没有正确的结构。使用unit sum = n*(n+1)(2*n+1)/6;