복붙노트

[HADOOP] org.apache.hadoop.mapreduce.lib.input.SequenceFileRecordReader.close에서 java.lang.NullPointerException이

HADOOP

org.apache.hadoop.mapreduce.lib.input.SequenceFileRecordReader.close에서 java.lang.NullPointerException이

나는이지도-감소 쌍을 실행하고 있습니다. 제 출력 맵-줄이기 다음 맵을 줄이기위한 입력으로 사용되고있다. 위해 나는 job.setOutputFormatClass (SequenceFileOutputFormat.class)을 부여했다고 할 수 있습니다. 다음 드라이버 클래스를 실행하는 동안 :

패키지 조직; 수입 org.apache.commons.configuration.ConfigurationFactory; 수입 org.apache.hadoop.conf.Configured; 수입 org.apache.hadoop.fs.Path; 수입 org.apache.hadoop.io.Text; 수입 org.apache.hadoop.mapreduce.Job; 수입 org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 수입 org.apache.hadoop.mapreduce.lib.input.SequenceFileInputFormat; 수입 org.apache.hadoop.mapreduce.lib.input.TextInputFormat; 수입 org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; 수입 org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat; 수입 org.apache.hadoop.util.Tool; 수입 org.apache.hadoop.util.ToolRunner; 수입 org.apache.mahout.math.VarLongWritable; 수입 org.apache.mahout.math.VectorWritable; 공용 클래스 드라이버 1 구성 구현 도구를 확장 { 공공 INT 실행 (문자열 []에 인수) 예외를 throw { (args.length! = 3)의 경우 { System.err.println을 ( "사용 : MaxTemperatureDriver "); System.exit와 (-1); } // ConfFactory 워크 플로우 = 새로운 ConfFactory (새 경로 ( "/ input.txt을"), 새로운 경로 ( "/ 경우 output.txt"), TextInputFormat.class, VarLongWritable.class, Text.class, VarLongWritable.class, VectorWritable.class, SequenceFileOutputFormat.class); 작업 작업 = 새 작업 (); 작업 작업 1 = 새 작업 (); job.setJarByClass (Driver1.class); job.setJobName ( "최대 사용 온도"); FileInputFormat.addInputPath (작업, 새로운 경로 (인수 [0])); FileOutputFormat.setOutputPath (작업, 새로운 경로 (인수 [1])); job.setMapperClass (UserVectorMapper.class); job.setReducerClass (UserVectorReducer.class); job.setOutputKeyClass (VarLongWritable.class); job.setOutputValueClass (VectorWritable.class); job.setOutputFormatClass (SequenceFileOutputFormat.class); job1.setJarByClass (Driver1.class); //job.setJobName("Max 온도 "); job1.setInputFormatClass (SequenceFileInputFormat.class); FileInputFormat.addInputPath (작업 1, 새로운 경로 ( "출력 / 파트 R-00000")); FileOutputFormat.setOutputPath (작업 1, 새로운 경로 (인수 [2])); job1.setMapperClass (ItemToItemPrefMapper.class); //job1.setReducerClass(UserVectorReducer.class); job1.setOutputKeyClass (VectorWritable.class); job1.setOutputValueClass (VectorWritable.class); job1.setOutputFormatClass (SequenceFileOutputFormat.class); System.exit와 (job.waitForCompletion) (참) && job1.waitForCompletion (참 0 : 1); 부울 성공 = job.waitForCompletion (TRUE); 성공을 반환? 0 : 1; } 공공 정적 무효 메인 (문자열 []에 args) {예외 발생 드라이버 1 드라이버 새로운 드라이버 1 = (); INT가 ExitCode = ToolRunner.run (드라이버에 args); System.exit와 (가 ExitCode); } }

나는 다음과 같은 런타임 로그를 얻고있다.

플랫폼을위한 네이티브 하둡 라이브러리를로드 할 수 ... 내장 - 자바 클래스에 해당되는 경우를 사용 할 수 없습니다 : 15/02/24 20시 0분 49초는 util.NativeCodeLoader WARN 인수를 구문 분석을 위해 사용 GenericOptionsParser : 15/02/24 20시 0분 49초는 mapred.JobClient을 경고한다. 응용 프로그램은 동일한위한 도구를 구현해야합니다. 15/02/24 20시 0분 49초는 mapred.JobClient을 WARN : 없음 작업 jar 파일 세트를. 사용자 클래스가 발견되지 않을 수 있습니다. JobConf (클래스) 또는 JobConf # setJar (String)를 참조하십시오. 15/02/24 20시 0분 49초 정보 input.FileInputFormat : 프로세스 총 입력 경로 1 15/02/24 20시 0분 49초는 snappy.LoadSnappy을 WARN :로드되지 뭐 이따위로 네이티브 라이브러리를 15/02/24 20시 0분 49초 정보의 mapred.JobClient : 실행중인 작업 : job_local1723586736_0001 15/02/24 20시 0분 49초 정보 mapred.LocalJobRunner은 :지도 작업 대기 중 15/02/24 20시 0분 49초 정보 mapred.LocalJobRunner : 시작 작업 : attempt_local1723586736_0001_m_000000_0 15/02/24 20시 0분 49초 정보 util.ProcessTree가 : 종료 코드 0으로 종료 setsid 15/02/24 20시 0분 49초 정보 mapred.Task : 사용 ResourceCalculatorPlugin : org.apache.hadoop.util.LinuxResourceCalculatorPlugin@1185f32 15/02/24 20시 0분 49초 정보 mapred.MapTask : 처리 분할 : 파일 : /home/smaiti/workspace/recommendationsy/data.txt : 0 + 1979173 15/02/24 20시 0분 50초 INFO mapred.MapTask : io.sort.mb = 100 15/02/24 20시 0분 50초 INFO mapred.MapTask : 데이터 버퍼 = 99,614,720분의 79,691,776 15/02/24 20시 0분 50초 INFO mapred.MapTask : 기록 버퍼 = 327,680분의 262,144 15/02/24 20시 0분 50초 정보 mapred.JobClient :지도 0 % 0 % 감소 15/02/24 20시 0분 50초 정보 mapred.MapTask :지도 출력의 플러시 시작 15/02/24 20시 0분 51초 정보 mapred.MapTask : 완료 유출 0 15/02/24 20시 0분 51초 정보 mapred.Task : 작업 : attempt_local1723586736_0001_m_000000_0이 이루어집니다. 그리고 커밋하는 과정에있다 15/02/24 20시 0분 51초 정보 mapred.LocalJobRunner : 15/02/24 20시 0분 51초 정보 mapred.Task : 수행 작업 'attempt_local1723586736_0001_m_000000_0'. 15/02/24 20시 0분 51초 정보 mapred.LocalJobRunner : 마무리 작업 : attempt_local1723586736_0001_m_000000_0 15/02/24 20시 0분 51초 정보 mapred.LocalJobRunner :지도 작업 실행이 완료되었습니다. 15/02/24 20시 0분 51초 정보 mapred.Task : ResourceCalculatorPlugin 사용 : org.apache.hadoop.util.LinuxResourceCalculatorPlugin@9cce9를 15/02/24 20시 0분 51초 정보 mapred.LocalJobRunner : 15/02/24 20시 0분 51초 정보 mapred.Merger : 1 개 분류 세그먼트를 병합 15/02/24 20시 0분 51초 INFO mapred.Merger : 전체 크기의 좌측 1 개 세그먼트 병합 마지막 패스, 아래 : 2,074,779 바이트 15/02/24 20시 0분 51초 정보 mapred.LocalJobRunner : 15/02/24 20시 0분 51초 정보 mapred.Task : 작업 : attempt_local1723586736_0001_r_000000_0이 이루어집니다. 그리고 커밋하는 과정에있다 15/02/24 20시 0분 51초 정보 mapred.LocalJobRunner : 15/02/24 20시 0분 51초 정보 mapred.Task : 작업 attempt_local1723586736_0001_r_000000_0 이제 커밋 할 수있다 15/02/24 20시 0분 51초 정보의 output.FileOutputCommitter : 출력 작업 'attempt_local1723586736_0001_r_000000_0'의 저장된 출력 15/02/24 20시 0분 51초 정보 mapred.LocalJobRunner : 감소> 감소 15/02/24 20시 0분 51초 정보 mapred.Task : 수행 작업 'attempt_local1723586736_0001_r_000000_0'. 15/02/24 20시 0분 51초 정보 mapred.JobClient :지도 100 % 100 % 감소 15/02/24 20시 0분 51초 정보 mapred.JobClient : 작업 완료 : job_local1723586736_0001 15/02/24 20시 0분 51초 정보 mapred.JobClient : 카운터 : 20 15/02/24 20시 0분 51초 정보 mapred.JobClient : 파일 출력 형식 카운터 15/02/24 20시 0분 51초 정보 mapred.JobClient : 바이트 글 = 1012481 15/02/24 20시 0분 51초 정보 mapred.JobClient : 파일 입력 형식 카운터 15/02/24 20시 0분 51초 정보 mapred.JobClient : 바이트 읽기 = 1979173 15/02/24 20시 0분 51초 정보 mapred.JobClient : FileSystemCounters 15/02/24 20시 0분 51초 정보 mapred.JobClient : FILE_BYTES_READ = 6033479 15/02/24 20시 0분 51초 정보 mapred.JobClient : FILE_BYTES_WRITTEN = 5264031 15/02/24 20시 0분 51초 정보 mapred.JobClient : 프레임 워크를지도-감소 15/02/24 20시 0분 51초 INFO mapred.JobClient : 축소 입력 그룹 = 943 15/02/24 20시 0분 51초 정보 mapred.JobClient은 :지도 출력 바이트 = 2,074,783 구체화 15/02/24 20시 0분 51초 정보 mapred.JobClient : 겸용 출력 레코드 = 0 15/02/24 20시 0분 51초 정보 mapred.JobClient :지도 입력 레코드 = 100000 15/02/24 20시 0분 51초 정보 mapred.JobClient : 줄 셔플 바이트 = 0 15/02/24 20시 0분 51초 정보 mapred.JobClient : 실제 메모리 (바이트) 스냅 샷 = 0 15/02/24 20시 0분 51초 INFO mapred.JobClient : 출력 레코드를 감소 = 943 15/02/24 20시 0분 51초 정보 mapred.JobClient : 기록 = 200000 유출 된 15/02/24 20시 0분 51초 정보 mapred.JobClient :지도 출력 바이트 = 1,874,777 15/02/24 20시 0분 51초 정보 mapred.JobClient : 총 헌신적 인 힙 사용량 (바이트) = 415,760,384 15/02/24 20시 0분 51초 정보 mapred.JobClient : CPU 시간 소요 (MS) = 0 15/02/24 20시 0분 51초 정보 mapred.JobClient : 가상 메모리 (바이트) 스냅 샷 = 0 15/02/24 20시 0분 51초 INFO mapred.JobClient : SPLIT_RAW_BYTES = 118 15/02/24 20시 0분 51초 정보 mapred.JobClient :지도 출력 기록 = 100000 15/02/24 20시 0분 51초 정보 mapred.JobClient : 겸용 입력 레코드 = 0 15/02/24 20시 0분 51초 INFO mapred.JobClient : 입력 레코드 줄이기 = 100000 인수를 구문 분석을 위해 사용 GenericOptionsParser : 15/02/24 20시 0분 51초는 mapred.JobClient을 경고한다. 응용 프로그램은 동일한위한 도구를 구현해야합니다. 15/02/24 20시 0분 51초는 mapred.JobClient을 WARN : 없음 작업 jar 파일 세트를. 사용자 클래스가 발견되지 않을 수 있습니다. JobConf (클래스) 또는 JobConf # setJar (String)를 참조하십시오. 15/02/24 20시 0분 51초 정보 input.FileInputFormat : 프로세스 총 입력 경로 1 15/02/24 20시 0분 51초 정보의 mapred.JobClient : 실행중인 작업 : job_local735350013_0002 15/02/24 20시 0분 51초 정보 mapred.LocalJobRunner은 :지도 작업 대기 중 15/02/24 20시 0분 51초 정보 mapred.LocalJobRunner : 시작 작업 : attempt_local735350013_0002_m_000000_0 15/02/24 20시 0분 51초 정보 mapred.Task : 사용 ResourceCalculatorPlugin : org.apache.hadoop.util.LinuxResourceCalculatorPlugin@1a970 15/02/24 20시 0분 51초 정보 mapred.MapTask : 처리 분할 : 파일 : / 홈 / smaiti / 작업 / recommendationsy / 출력 / 부품-R-00000 : 0 + 1004621 15/02/24 20시 0분 51초 INFO mapred.MapTask : io.sort.mb = 100 15/02/24 20시 0분 51초 INFO mapred.MapTask : 데이터 버퍼 = 99,614,720분의 79,691,776 15/02/24 20시 0분 51초 INFO mapred.MapTask : 기록 버퍼 = 327,680분의 262,144 15/02/24 20시 0분 51초 정보 mapred.MapTask : org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader@9cc591에 가까운 중에 예외를 무시 java.lang.NullPointerException이 org.apache.hadoop.mapreduce.lib.input.SequenceFileRecordReader.close에서 (SequenceFileRecordReader.java:101) org.apache.hadoop.mapred.MapTask $ NewTrackingRecordReader.close (MapTask.java:496)에서 org.apache.hadoop.mapred.MapTask.closeQuietly에서 (MapTask.java:1776) org.apache.hadoop.mapred.MapTask.runNewMapper에서 (MapTask.java:778) org.apache.hadoop.mapred.MapTask.run에서 (MapTask.java:364) org.apache.hadoop.mapred.LocalJobRunner $ 작업 $ MapTaskRunnable.run (LocalJobRunner.java:223)에서 java.util.concurrent.Executors $ RunnableAdapter.call에서 (Executors.java:471) java.util.concurrent.FutureTask.run에서 (FutureTask.java:262) java.util.concurrent.ThreadPoolExecutor.runWorker에서 (ThreadPoolExecutor.java:1145) java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:615)에서 java.lang.Thread.run에서 (Thread.java:745) 15/02/24 20시 0분 51초 정보 mapred.LocalJobRunner :지도 작업 실행이 완료되었습니다. 15/02/24 20시 0분 51초는 mapred.LocalJobRunner 경고 : job_local735350013_0002를 의 java.lang.Exception : java.lang.ClassCastException가 : 클래스 org.apache.mahout.math.VectorWritable org.apache.hadoop.mapred.LocalJobRunner $ Job.run (LocalJobRunner.java:354)에서 java.lang.ClassCastException가 :에 의한 클래스 org.apache.mahout.math.VectorWritable java.lang.Class.asSubclass에서 (Class.java:3208) org.apache.hadoop.mapred.JobConf.getOutputKeyComparator에서 (JobConf.java:795) org.apache.hadoop.mapred.MapTask $ MapOutputBuffer에서. <초기화> (MapTask.java:964) org.apache.hadoop.mapred.MapTask $ NewOutputCollector에서. <초기화> (MapTask.java:673) org.apache.hadoop.mapred.MapTask.runNewMapper에서 (MapTask.java:756) org.apache.hadoop.mapred.MapTask.run에서 (MapTask.java:364) org.apache.hadoop.mapred.LocalJobRunner $ 작업 $ MapTaskRunnable.run (LocalJobRunner.java:223)에서 java.util.concurrent.Executors $ RunnableAdapter.call에서 (Executors.java:471) java.util.concurrent.FutureTask.run에서 (FutureTask.java:262) java.util.concurrent.ThreadPoolExecutor.runWorker에서 (ThreadPoolExecutor.java:1145) java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:615)에서 java.lang.Thread.run에서 (Thread.java:745) 15/02/24 20시 0분 52초 정보 mapred.JobClient :지도 0 % 0 % 감소 15/02/24 20시 0분 52초 정보 mapred.JobClient : 작업 완료 : job_local735350013_0002 15/02/24 20시 0분 52초 정보 mapred.JobClient : 카운터 : 0

나는 점점 오전 첫 번째 예외는 이것이다 : java.lang.NullPointerException이     org.apache.hadoop.mapreduce.lib.input.SequenceFileRecordReader.close에서 (SequenceFileRecordReader.java:101)

도와주세요.

해결법

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

    1.데이터를 직렬화하는 동안 하둡 혼란 때문에이 중심이다.

    데이터를 직렬화하는 동안 하둡 혼란 때문에이 중심이다.

    에 있는지 확인

  2. from https://stackoverflow.com/questions/28699037/java-lang-nullpointerexception-at-org-apache-hadoop-mapreduce-lib-input-sequence by cc-by-sa and MIT license