복붙노트

[HADOOP] Getting Cascading.tap.hadoop.io.MultiInputSplit 클래스가 계단식 프레임 워크를 사용하여 hadoop 프로그램을 실행하는 동안 예외를 찾을 수 없습니다.

HADOOP

Getting Cascading.tap.hadoop.io.MultiInputSplit 클래스가 계단식 프레임 워크를 사용하여 hadoop 프로그램을 실행하는 동안 예외를 찾을 수 없습니다.

다음은 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();

}

내 일이 하프 머신에 제출되고있다. 나는 직업 추적자에서 이것을 확인할 수있다. 그러나 일이 실패하고 나는 아래 예외를 얻고있다.

cascading.tap.hadoop.io.MultiInputSplit을 찾을 수 없습니다.     org.apache.hadoop.mapred.MapTask.getSplitDetails (MapTask.java:348)     mapTask.java : 389).     org.apache.hadoop.mapred.MapTask.run (MapTask.java:333)     org.apache.hadoop.mapred.Child $ 4.run (Child.java:268)     java.security.AccessController.doPrivileged (네이티브 메소드)     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)에서     org.apache.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. 나는 내 컴퓨터에서 이것을 실행하고 hadoop은 다른 상자에 설치되어있다. 2. 나는 CDH 4 인 hadoop에 대해 cloudera 분포를 사용하고 있습니다.

해결법

  1. ==============================

    1.등록 정보 파일이 비어 있으므로이 작업에 대한 구성이 클러스터에서 해제되어있을 수 있습니다. HadoopFlowController에 사용중인 구성을 제공해야합니다. 새로운 Configuration을 호출 할 때 발견되는 Hadoop 설정 파일에 포함 된 정보는 fs.default.name = file : ////과 같은 Properties 객체에 속합니다.이 경우에는 "전선"을 가로 지르는 계단식 작업.

    등록 정보 파일이 비어 있으므로이 작업에 대한 구성이 클러스터에서 해제되어있을 수 있습니다. HadoopFlowController에 사용중인 구성을 제공해야합니다. 새로운 Configuration을 호출 할 때 발견되는 Hadoop 설정 파일에 포함 된 정보는 fs.default.name = file : ////과 같은 Properties 객체에 속합니다.이 경우에는 "전선"을 가로 지르는 계단식 작업.

  2. ==============================

    2.문제가 있습니다. CDH 4.2에는 계단식 2.1과 관련된 문제가 있습니다. 그래서 CDH 4.1로 바뀌었고 저에게 도움이되었습니다.

    문제가 있습니다. CDH 4.2에는 계단식 2.1과 관련된 문제가 있습니다. 그래서 CDH 4.1로 바뀌었고 저에게 도움이되었습니다.

  3. from https://stackoverflow.com/questions/15988091/getting-cascading-tap-hadoop-io-multiinputsplit-class-not-found-exception-while by cc-by-sa and MIT license