MapReduce  코딩 4일차...

MapReduce 를 만들다보면

사용자정의 형태의 Writable 를 만들어서 사용해야 되는 케이스가 있다. 

만드는 방법이야. 

아래 블러그 내용을 보면 금방 알수가 있으니 패스..

http://blog.naver.com/PostView.nhn?blogId=plateu&logNo=30134405743

여기서 이야기 하고자 하는 것은

상속받아 만든 Custom Writable  객체로 저장한 데이터를 

다시 읽어 들여서 수정하고자 하는 경우에 대해서 말하고자 한다. 

이 경우 중요한것은 입출력 Type정의가 가장 중요하다. 

  conf.setInputFormat(TextInputFormat.class);           //Map에 들어오는 타입

conf.setOutputFormat(SequenceFileOutputFormat.class);  //Reduce에서 나가서 저장되는 타입 (바이너리 형태로 저장해야지 Custom Writable 객체로 저장한 것을 손쉽게 읽어 들일수 있다. )

conf.setMapOutputKeyClass(Text.class); //map 에서 나가는 출력

conf.setMapOutputValueClass(CustomWritable.class);

conf.setOutputKeyClass(Text.class);      //Reduce 에서 나가는 출력

conf.setOutputValueClass(DataWritable.class);

conf.setMapperClass(Map.class);

conf.setCombinerClass(Reduce.class);

conf.setReducerClass(Reduce.class);


이렇게 정의하여 바이너리 형태로 저장한것을 

public void map(Text key, CustomWritable value, OutputCollector<Text, CustomWritable  output, Reporter reporter) throws IOException {

불러 들여 사용하는곳에서 위와 같이 불러 들이면 손쉽게 가져와 사용 할 수 있다 

이것을 몰랐을때.. 구글 검색 해보니..(검색단어가 안좋았던듯..) HDFS에서 읽어 들여 1Byte단위

잘라서 사용하는 소스를 .. 보고 . 엄청 고민했다는..



+ Recent posts