2011-12-05 3 views
0

MapFile에 출력하고 싶은 hadoop 작업이 있는데, MapFileOutputFormat이없는 hadoop 0.20.203을 실행중인 클러스터에서 실행해야합니다. 병렬로 MapFile에 SequenceFileOutputFormat (여러 SequenceFile을 포함 할 수 있다고 생각합니다)의 출력을 변환 할 수있는 방법이 있습니까? ArrayFile은 무엇입니까? (키가 모두 정수이고 상대적으로 응축 된 경우)MapFileOutputFormat for hadoop 0.20.203

답변

1

MapFileOutputFormat은 0.20.203에 있습니다. SequenceFile에서 MapFile로 변환 할 필요가 없습니다.

참고 : SequenceFile을 MapFile로 변환하는 것은 SequenceFile을 열고 SequenceFile에 대한 인덱스를 생성하는 MapFile#fix을 사용하여 수행 할 수 있습니다. 이것의 선구자는 SequenceFile의 내용을 정렬해야한다는 것이므로 MR 작업을 생성 할 수 있습니다. zip의 MapFileFixer.java에는 샘플 코드가 있습니다.

+0

예. 그렇지만 이전 스타일의 org.apache.hadoop.mapred.FileOutputFormat을 확장합니다. http://hadoop.apache.org/common/docs/r0.20.205.0/api/org/와 호환되지 않습니다. apache/hadoop/mapreduce/Job.html # setOutputFormatClass (java.lang.Class) – dspyz

+0

이전/새 MR API에 대한 언급이 OP에 없었습니다. BTW, 새로운 MR API의 어떤 기능을 사용하고 있습니까? 오래된 MR API에는 없습니다. 특별한 요구 사항이 없다면 이전 API를 사용하기 위해 이식하기가 어렵지 않아야합니다. 그렇지 않으면 [MapFileOutputFormat] (http://svn.apache.org/repos/asf/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/) java/org/apache/hadoop/mapreduce/lib/output/MapFileOutputFormat.java)가 새 MR API로 트렁크에 있습니다. 이 코드로 Hadoop을 만들 수 있습니다. –

+0

나는 Job.setOutputFormatClass가 Class 을 확장하고 MapFileOutputFormat.class의 유형은 Class 하나는 mapreduce.OutputFormat이고 다른 하나는 mapred.OutputFormat입니다. 그들은 호환되지 않습니다 편집 : 죄송합니다, 나는 Mapper와 내가 OutputFormat을 의미 했음 – dspyz