[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.당신은 당신의 VALUE 클래스에 대한 비교 클래스를 작성하기가 상대적으로 용이 필요합니다.
당신은 당신의 VALUE 클래스에 대한 비교 클래스를 작성하기가 상대적으로 용이 필요합니다.
여기에 좀 더 자세히 살펴 보자 http://vangjee.wordpress.com/2012/03/20/secondary-sorting-aka-sorting-values-in-hadoops-mapreduce-programming-paradigm/을 특히 보조 정렬 부분에 대한 해결책에 .
-
==============================
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))); }
from https://stackoverflow.com/questions/14320313/mapreduce-sort-values by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] HDFS / 쓰기에서 읽기에 사용할 수있는 하둡 파일 시스템 객체를 얻을 수있는 올바른 방법은 무엇입니까? (0) | 2019.09.25 |
---|---|
[HADOOP] 하둡 창 org.codehaus.mojo : 간부-받는다는 - 플러그인 (0) | 2019.09.25 |
[HADOOP] 어떻게 HDFS 클라이언트를 사용하여 원격 데이터 노드에 연결? (0) | 2019.09.24 |
[HADOOP] 하둡 : FileNotFoundExcepion DistributedCache에서 파일을 가져올 때 (0) | 2019.09.24 |
[HADOOP] 기술은 하둡의 기본 스케줄러를 알고 (0) | 2019.09.24 |