0

Hadoop マシンに接続し、一連の検証を実行して別のディレクトリに書き込むコードを次に示します。

      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();

}

私の仕事は Hadoop マシンに送信されています。これはジョブトラッカーで確認できます。しかし、ジョブが失敗し、以下の例外が発生しています。

cascading.tap.hadoop.io.MultiInputSplit が org.apache.hadoop.mapred.MapTask.getSplitDetails(MapTask.java:348) で見つかりません org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:389) でorg.apache.hadoop.mapred.MapTask.run(MapTask.java:333) at org.apache.hadoop.mapred.Child$4.run(Child.java:268) at java.security.AccessController.doPrivileged(Native Method) javax.security.auth.Subject.doAs(Subject.java:415) org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408) org.apache.hadoop.mapred.Child.main(Child) .java:262) 原因: java.lang.ClassNotFoundException: クラス cascading.tap.hadoop.io.MultiInputSplit が org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1493) で見つかりません。 hadoop.mapred.MapTask.getSplitDetails(MapTask.java:346) ...さらに7

java.lang.ClassNotFoundException: クラス cascading.tap.hadoop.io.MultiInputSplit が org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1493) で見つかりません

注意: 1. Windows マシンからこれを実行しており、hadoop は別のボックスにセットアップされています。2. CDH 4 である Hadoop 用の Cloudera ディストリビューションを使用しています。

4

2 に答える 2

0

問題を取得しました。CDH 4.2 にはカスケード 2.1 に関する問題があります。CDH 4.1に変更したところ、うまくいきました。

于 2013-09-09T08:08:56.883 に答える