'2016/07/05'에 해당되는 글 1건

  1. 2016.07.05 [MapReduce] 문자열 소팅
반응형

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

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


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
,