[HADOOP] 어떻게 OutputCommitter의 설정을 설정하는 방법?
HADOOP어떻게 OutputCommitter의 설정을 설정하는 방법?
나는 JobClient를 사용하여 작업을 제출 맵리 듀스 코드가 있습니다. 나는이 널 포인터 오류 스택가 계속
12/12/10 12:42:44 INFO mapred.LocalJobRunner: OutputCommitter set in config null
Exception in thread "main" java.lang.NullPointerException
at org.apache.hadoop.mapred.JobClient$NetworkedJob.<init>(JobClient.java:226)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:924)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:844)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1232)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:844)
at org.apache.hadoop.mapred.JobClient.submitJob(JobClient.java:818)
at FTPIF.run(FTPIF.java:193)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
at FTPIF.main(FTPIF.java:273)
저를 얻는 코드의 조각이 오류입니다
JobClient j = new JobClient();
j.init(conf);
RunningJob check = j.submitJob(conf);
어떤 아이디어?
해결법
-
==============================
1.나뿐만 아니라이 문제를 가지고있다. 그러나 j.runJob (conf의)을 사용하여; 잘 작동합니다. 또한 당신은 정적 기능 JobClient.runJob (conf의)를 사용할 수 있습니다 ;. 나는 그때 JobClient의 소스를 읽을 이유를 알고 정적 기능 runJob의 구현을 찾을 수 없습니다 :
나뿐만 아니라이 문제를 가지고있다. 그러나 j.runJob (conf의)을 사용하여; 잘 작동합니다. 또한 당신은 정적 기능 JobClient.runJob (conf의)를 사용할 수 있습니다 ;. 나는 그때 JobClient의 소스를 읽을 이유를 알고 정적 기능 runJob의 구현을 찾을 수 없습니다 :
public static RunningJob runJob(JobConf job) throws IOException { JobClient jc = new JobClient(job); RunningJob rj = jc.submitJob(job); try { if (!jc.monitorAndPrintJob(job, rj)) { throw new IOException("Job failed!"); } } catch (InterruptedException ie) { Thread.currentThread().interrupt(); } return rj; }
그래서 나는이 방법으로 submitJob 기능을 사용 :
JobClient jcli = new JobClient(jconf); RunningJob rJob = jcli.submitJob(jconf); while (true){ Thread.sleep(5000); System.out.println(rJob); if (rJob.isComplete()) break; }
나는 작동! 어쩌면 이것은 또한 당신에게 유용합니다.
-
==============================
2.내가 널 포인터에 공격 이유를 파악하지 않았다. j.setConf (conf의)을 설정하면 작동하지 않았다. 그래서 실행중인 작업에 대한 핸들을 얻는 대신 runJob을 사용했다.
내가 널 포인터에 공격 이유를 파악하지 않았다. j.setConf (conf의)을 설정하면 작동하지 않았다. 그래서 실행중인 작업에 대한 핸들을 얻는 대신 runJob을 사용했다.
RunningJob job= JobClient.runJob(conf);
from https://stackoverflow.com/questions/13796625/how-to-set-outputcommitter-config by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] java.lang.ClassNotFoundException가 : org.apache.hadoop.hive.service.HiveServerException (0) | 2019.10.06 |
---|---|
[HADOOP] 왜 매퍼와 작업이 유일한 클러스터의 느린입니까? (0) | 2019.10.06 |
[HADOOP] 어떻게 .lzo_deflat 파일을 디코딩 할 수? (0) | 2019.10.05 |
[HADOOP] 몇 열에 대한 열을 번들 하이브 / SQL은 열 나머지는 풀을 기반으로하는 다른 열 최저 / 최고 (0) | 2019.10.05 |
[HADOOP] Dataproc에서 클러스터를 만들 때보고 데이타 노드 불충분 한 수 (0) | 2019.10.05 |