[HADOOP] 하둡은 - 어떻게 mapred.JobConf에서 TASKID를 추출?
HADOOP하둡은 - 어떻게 mapred.JobConf에서 TASKID를 추출?
그것은 * mapred * .JobConf에서 유효한 *의 맵리 듀스 * .TaskAttemptID을 만들 수 있습니까?
배경
나는 ExistingFileInputFormat에 대한 FileInputFormatAdapter를 작성해야합니다. 문제는 어댑터 mapred.InputFormat을 연장 할 필요가 기존 형식 mapreduce.InputFormat을 연장한다.
나는 내가 ExistingRecordReader를 인스턴스화 할 수 있도록하는 mapreduce.TaskAttemptContextImpl를 구축 할 필요가있다. 그러나, 나는 유효한 TaskID를 만들 수 없습니다 ... TASKID가 null로 나옵니다.
그래서 mapred.JobConf에서 등등 TASKID, 작업 ID를 얻을 수있는 방법.
어댑터의 getRecordReader에서 특히 내가 좋아하는 뭔가를 할 필요가 :
public org.apache.hadoop.mapred.RecordReader<NullWritable, MyWritable> getRecordReader(
org.apache.hadoop.mapred.InputSplit split, JobConf job, Reporter reporter) throws IOException {
SplitAdapter splitAdapter = (SplitAdapter) split;
final Configuration conf = job;
/*************************************************/
//The problem is here, "mapred.task.id" is not in the conf
/*************************************************/
final TaskAttemptID taskId = TaskAttemptID.forName(conf.get("mapred.task.id"));
final TaskAttemptContext context = new TaskAttemptContextImpl(conf, taskId);
try {
return new RecordReaderAdapter(new ExistingRecordReader(
splitAdapter.getMapRedeuceSplit(),
context));
} catch (InterruptedException e) {
throw new RuntimeException("Failed to create record-reader.", e);
}
}
이 코드는 예외가 발생합니다 :
Caused by: java.lang.NullPointerException
at org.apache.hadoop.mapreduce.task.TaskAttemptContextImpl.<init>(TaskAttemptContextImpl.java:44)
at org.apache.hadoop.mapreduce.task.TaskAttemptContextImpl.<init>(TaskAttemptContextImpl.java:39)
슈퍼 (conf의, taskId.getJobID ()); ' 예외를 던지고, 대부분 TASKID가 null이기 때문이다.
해결법
-
==============================
1.나는 HiveHbaseTableInputFormat을 통해보고 답을 발견했다. 내 솔루션은 하이브의 대상이되기 때문에,이 완벽하게 작동합니다.
나는 HiveHbaseTableInputFormat을 통해보고 답을 발견했다. 내 솔루션은 하이브의 대상이되기 때문에,이 완벽하게 작동합니다.
TaskAttemptContext tac = ShimLoader.getHadoopShims().newTaskAttemptContext( job.getConfiguration(), reporter);
from https://stackoverflow.com/questions/28466554/hadoop-how-to-extract-a-taskid-from-mapred-jobconf by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 돼지에서 CASE 문 (0) | 2019.10.06 |
---|---|
[HADOOP] Oozie 작업 제출 실패 (0) | 2019.10.06 |
[HADOOP] 하둡 스트리밍 mapred.output.compress에도 불구하고 압축 파일을 생성 = TRUE (0) | 2019.10.06 |
[HADOOP] 어떻게 그 디렉토리 아래에있는 모든 파일을 나열하지 않고 HDFS 명령을 사용하여 특정 디렉토리 패턴 소비 디스크 공간을 확인하는? (0) | 2019.10.06 |
[HADOOP] KMeans는 범주 형 변수 처리 (0) | 2019.10.06 |