Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在本地模式下运行简单的级联应用程序_Java_Hadoop_Cascading - Fatal编程技术网

Java 在本地模式下运行简单的级联应用程序

Java 在本地模式下运行简单的级联应用程序,java,hadoop,cascading,Java,Hadoop,Cascading,我是级联/Hadoop新手,正在尝试以本地模式(即在内存中)运行一个简单的示例。该示例仅复制一个文件: import java.util.Properties; import cascading.flow.Flow; import cascading.flow.FlowConnector; import cascading.flow.FlowDef; import cascading.flow.local.LocalFlowConnector;

我是级联/Hadoop新手,正在尝试以本地模式(即在内存中)运行一个简单的示例。该示例仅复制一个文件:

    import java.util.Properties;

    import cascading.flow.Flow;
    import cascading.flow.FlowConnector;
    import cascading.flow.FlowDef;
    import cascading.flow.local.LocalFlowConnector;
    import cascading.pipe.Pipe;
    import cascading.property.AppProps;
    import cascading.scheme.hadoop.TextLine;
    import cascading.tap.Tap;
    import cascading.tap.hadoop.Hfs;

    public class CascadingTest {

            public static void main(String[] args) {
                Properties properties = new Properties();


                AppProps.setApplicationJarClass( properties, CascadingTest.class );
                FlowConnector flowConnector = new LocalFlowConnector();

                // create the source tap
                Tap inTap = new Hfs( new TextLine(), "D:\\git_workspace\\Impatient\\part1\\data\\rain.txt" );

            // create the sink tap
            Tap outTap = new Hfs( new TextLine(), "D:\\git_workspace\\Impatient\\part1\\data\\out.txt" );

            // 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
            Flow flow = flowConnector.connect( flowDef );
            flow.complete();
        }
    }
下面是我得到的错误:

09-25-12 11:30:38,114 INFO  - AppProps                     - using app.id: 9C82C76AC667FDAA2F6969A0DF3949C6
Exception in thread "main" cascading.flow.planner.PlannerException: could not build flow from assembly: [java.util.Properties cannot be cast to org.apache.hadoop.mapred.JobConf]
    at cascading.flow.planner.FlowPlanner.handleExceptionDuringPlanning(FlowPlanner.java:515)
    at cascading.flow.local.planner.LocalPlanner.buildFlow(LocalPlanner.java:84)
    at cascading.flow.FlowConnector.connect(FlowConnector.java:454)
    at com.x.y.CascadingTest.main(CascadingTest.java:37)
Caused by: java.lang.ClassCastException: java.util.Properties cannot be cast to org.apache.hadoop.mapred.JobConf
    at cascading.tap.hadoop.Hfs.sourceConfInit(Hfs.java:78)
    at cascading.flow.local.LocalFlowStep.initTaps(LocalFlowStep.java:77)
    at cascading.flow.local.LocalFlowStep.getInitializedConfig(LocalFlowStep.java:56)
    at cascading.flow.local.LocalFlowStep.createFlowStepJob(LocalFlowStep.java:135)
    at cascading.flow.local.LocalFlowStep.createFlowStepJob(LocalFlowStep.java:38)
    at cascading.flow.planner.BaseFlowStep.getFlowStepJob(BaseFlowStep.java:588)
    at cascading.flow.BaseFlow.initializeNewJobsMap(BaseFlow.java:1162)
    at cascading.flow.BaseFlow.initialize(BaseFlow.java:184)
    at cascading.flow.local.planner.LocalPlanner.buildFlow(LocalPlanner.java:78)
    ... 2 more
欢迎来到级联-

我刚刚回答了级联用户列表,但简单地说,问题是本地类和Hadoop模式类的混合。。此代码具有LocalFlowConnector,但随后使用Hfs抽头

当我回到“不耐烦”教程中使用的类时,它会正确运行:

仅提供一点细节:您不能在级联中混合使用本地类和hadoop类,因为它们假定不同且不兼容的环境。在您的案例中,您正在尝试使用hadoop taps创建本地流,后者希望使用hadoop
JobConf
而不是用于配置本地taps的
Properties
对象

如果您使用
cascading.tap.local.FileTap
而不是
cascading.tap.hadoop.Hfs
,您的代码将正常工作。是的,您需要使用LFS(本地文件系统)tap而不是Hfs(hadoop文件系统)

您还可以使用Junit测试用例(带有级联unittest jar)在本地模式下测试代码本身/来自eclipse


谢谢。我正试图在本地模式下运行这个程序-你能展示一个这样的例子吗?我正在编写一些代码来说明本地模式,作为“不耐烦”系列的下一部分@我发了一个问题。请看一看并回答。我可以直接在eclipse中运行上述程序吗?-这个简单的视频教程回答了您的问题