Es wurde keine Ausnahme für die Klasse cascading.tap.hadoop.io.MultiInputSplit gefunden, während das Hadoop-Programm mit dem Cascading Framework ausgeführt wurde

Hier ist mein Code, der eine Verbindung zum hadoop-Rechner herstellt, eine Reihe von Überprüfungen durchführt und in ein anderes Verzeichnis schreibt.

      public class Main{

            public static void main(String...strings){

        System.setProperty("HADOOP_USER_NAME", "root");
        String in1 = "hdfs://myserver/user/root/adnan/inputfile.txt";
        String out = "hdfs://myserver/user/root/cascading/temp2";

        Properties properties = new Properties();
        AppProps.setApplicationJarClass(properties, Main.class);
        HadoopFlowConnector flowConnector = new HadoopFlowConnector(properties);

        Tap inTap = new Hfs(new TextDelimited(true, ","), in1);
        Tap outTap = new Hfs(new TextDelimited(true, ","), out);

        Pipe inPipe = new Pipe("in1");  

        Each removeErrors = new Each(inPipe, Fields.ALL, new BigFilter());
        GroupBy group = new GroupBy(removeErrors, getGroupByFields(fieldCols));
        Every mergeGroup = new Every(group, Fields.ALL, new MergeGroupAggregator(fieldCols), Fields.RESULTS);

        FlowDef flowDef = FlowDef.flowDef()
                .addSource(inPipe, inTap)
                .addTailSink(mergeGroup, outTap);

        flowConnector.connect(flowDef).complete();

}

Mein Job wird an hadoop machine übergeben. Ich kann dies auf Job Tracker überprüfen. Aber der Job scheitert und ich bekomme unten eine Ausnahme.

cascading.tap.hadoop.io.MultiInputSplit nicht gefunden bei org.apache.hadoop.mapred.MapTask.getSplitDetails (MapTask.java:348) bei org.apache.hadoop.mapred.MapTask.runOldMapper (MapTask.java:389) bei org.apache.hadoop.mapred.MapTask.run (MapTask.java:333) bei org.apache.hadoop.mapred.Child $ 4.run (Child.java:268) bei java.security.AccessController.doPrivileged (Native Method) at javax.security.auth.Subject.doAs (Subject.java:415) at org.apache.hadoop.security.UserGroupInformation.doAs (UserGroupInformation.java:1408) at org.apache.hadoop.mapred.Child.main (Child .java: 262) Auslöser: java.lang.ClassNotFoundException: Die Klasse cascading.tap.hadoop.io.MultiInputSplit wurde unter org.apache.hadoop.conf.Configuration.getClassByName (Configuration.java:1493) unter org.apache nicht gefunden. hadoop.mapred.MapTask.getSplitDetails (MapTask.java:346) ... 7 weitere

java.lang.ClassNotFoundException: Klasse cascading.tap.hadoop.io.MultiInputSplit nicht gefunden bei org.apache.hadoop.conf.Configuration.getClassByName (Configuration.java:1493)

Beachten Sie Folgendes: 1. Ich führe dies von meinem Windows-Computer aus und hadoop ist auf einer anderen Box eingerichtet. 2. Ich verwende die Cloudera-Distribution für Hadoop (CDH 4).

Antworten auf die Frage(2)

Ihre Antwort auf die Frage