반응형

하둡은 기본적으로 병합 소팅 프레임워크이다. 문자열 소팅은 맵퍼와 리듀서를 별도로 구현하지 않아도 수팅이 가능하다. 맵퍼와 리듀서의 기본 클래스를 아이덴터티 맵퍼, 리듀서라고 하는데 아이덴터티 맵퍼와 리듀서로 문자열 소팅이 가능하다.

 즉 다음의 메인 코드만으로도 텍스트 소팅이 가능하다.


public class stringsort {

public static void main(String[] args) {

Configuration conf=new Configuration();

try {

Job job=Job.getInstance();

job.setJarByClass(stringsort.class);

job.setMapperClass(Mapper.class);

job.setReducerClass(Reducer.class);

job.setMapOutputKeyClass(Text.class);

job.setMapOutputValueClass(Text.class);

job.setOutputKeyClass(Text.class);

job.setOutputValueClass(Text.class);

job.setInputFormatClass(KeyValueTextInputFormat.class);

job.setOutputFormatClass(SequenceFileOutputFormat.class);

FileInputFormat.addInputPath(job, new Path(args[0]));

SequenceFileOutputFormat.setOutputPath(job, new Path(args[1]));

SequenceFileOutputFormat.setOutputCompressionType(job, SequenceFile.CompressionType.BLOCK);

job.waitForCompletion(true);

} catch (IOException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (InterruptedException e) {

e.printStackTrace();

}

System.exit(-1);

}

} 


 이 코드에서 출력 저장은 SequenceFileOutputFormat을 이용하였다. 결과를 보려면 hdfs dfs -cat 명령으로 하지 말고 hdfs dfs -text  로 출력을 봐야 한다.

반응형
Posted by alias
,