복붙노트

[HADOOP] 맵리 듀스, 정렬 값

HADOOP

맵리 듀스, 정렬 값

내 매퍼의 출력을 가지고 :

Mapper: KEY, VALUE(Timestamp, someOtherAttrbibutes)

내 감속기 수신 않습니다 :

Reducer: KEY, Iterable<VALUE(Timestamp, someOtherAttrbibutes)>

나는 타임 스탬프 속성에 의해 주문에의 Iterable 합니다. 그것을 구현하는 가능성이 있습니까?

나는 감속기 코드 내부에 수동 정렬을하지 않도록하고 싶습니다. http://cornercases.wordpress.com/2011/08/18/hadoop-object-reuse-pitfall-all-my-reducer-values-are-the-same/

나는 "깊은 복사"의 Iterable의 모든 개체에있을 것이다 그것은 거대한 메모리 오버 헤드가 발생할 수 있습니다. (((

해결법

  1. ==============================

    1.당신은 당신의 VALUE 클래스에 대한 비교 클래스를 작성하기가 상대적으로 용이 필요합니다.

    당신은 당신의 VALUE 클래스에 대한 비교 클래스를 작성하기가 상대적으로 용이 필요합니다.

    여기에 좀 더 자세히 살펴 보자 http://vangjee.wordpress.com/2012/03/20/secondary-sorting-aka-sorting-values-in-hadoops-mapreduce-programming-paradigm/을 특히 보조 정렬 부분에 대한 해결책에 .

  2. ==============================

    2.당신은 당신의 VALUE 클래스에 대한 비교 클래스를 작성해야합니다.

    당신은 당신의 VALUE 클래스에 대한 비교 클래스를 작성해야합니다.

    @Override
    protected void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException {
        final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        List<String> list = new ArrayList<String>();
        for (Text val : values) {
            list.add(val.toString());
    
        }
        Collections.sort(list, new Comparator<String>() {
           public int compare(String s1, String s2) {
               String str1[] = s1.split(",");
               String str2[] = s2.split(",");
              int time1 = 0;
               int time2 = 0;
               try {
                   time1 = (int)(sdf.parse(str1[0]).getTime());
                   time2 = (int) (sdf.parse(str2[0]).getTime());
    
               } catch (ParseException e) {
                   e.printStackTrace();
               } finally {
                   return time1 - time2;
               }
           }
        });
        for(int i = 0; i < list.size(); ++i)
        context.write(key, new Text(list.get(i)));
    }
    
  3. from https://stackoverflow.com/questions/14320313/mapreduce-sort-values by cc-by-sa and MIT license