복붙노트

[HADOOP] MapReduce (보조) 정렬 / 필터링 - 어떻게?

HADOOP

MapReduce (보조) 정렬 / 필터링 - 어떻게?

타임 스탬프 값 (동시 사용자)의 로그 파일에 chatroom 웹 응용 프로그램의 다른 "영역"이 "타임 스탬프, 영역; 값"형식으로 저장되어 있습니다. 각 구역마다 매일 분당 하나의 값이 존재합니다.

각 영역에 대해 하루 최대 값을 나열하고이 최대 값으로 desc를 정렬합니다.

그래서,

#timestamp; zone; value
2011-01-01 00:00:00; 1; 10
2011-01-01 00:00:00; 2; 22
2011-01-01 00:01:00; 1; 11
2011-01-01 00:01:00; 2; 21

2011-01-02 00:00:00; 1; 12
2011-01-02 00:00:00; 2; 20

영역 1에 대해 생성해야합니다.

2011-01-02    12
2011-01-01    11

영역 2 :

2011-01-01    22
2011-01-02    20

어떻게 접근할까요? IMHO 하나 이상의 M / R 단계가 필요합니다.

지금까지 구현 한 내용은 다음과 같습니다.

이렇게하면 다음과 같은 파일이 생성됩니다.

2011-01-01/1    11
2011-01-01/2    22
2011-01-02/1    12
2011-01-02/2    20

이것이 두 번째 M / R 단계의 입력이 될까요? 그렇다면 무엇을 핵심 가치로 삼을 것입니까?

"Hadoop - The Definitive Guide"의 "Secondary Sort"예제를 연구했지만이 방법을 여기에 적용할지 여부와 방법을 잘 모르겠습니다.

M / R을 여러 개의 출력 파일 (한 영역에 하나씩)에 넣을 수 있습니까?

최신 정보 그것에 대해 생각한 후에, 나는 이것을 시도 할 것이다 :

해결법

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

    1.2 차 정렬을 사용하여 하나의 MR로이 작업을 수행 할 수 있습니다. 여기에 단계가 있습니다.

    2 차 정렬을 사용하여 하나의 MR로이 작업을 수행 할 수 있습니다. 여기에 단계가 있습니다.

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

    2.두 가지 맵 / 축소 단계가 필요하다는 것을 알지 못합니다. 하나의 맵 / 축소 단계가 필요하다는 것을 알지 못합니다. 결과를 단일 항목 대신 목록으로 만드는 것이 좋습니다. 그렇지 않으면, 예, 존별로 분할 한 다음 날짜별로 나눕니다.

    두 가지 맵 / 축소 단계가 필요하다는 것을 알지 못합니다. 하나의 맵 / 축소 단계가 필요하다는 것을 알지 못합니다. 결과를 단일 항목 대신 목록으로 만드는 것이 좋습니다. 그렇지 않으면, 예, 존별로 분할 한 다음 날짜별로 나눕니다.

    아마 영역별로 분할하고, 그 다음에 각 영역에서 가장 높은 요소 목록을 반환하도록하십시오. 그 시점에서 축소가 실제로 쉬울 것이기 때문입니다. 다른 맵 / 축소 단계에서 실제로 이익을 얻으려면 정말 큰 데이터 세트와 많은 기계를 분할해야합니다. 어느 시점에서 전체 키를 축소 할 것입니까?

  3. ==============================

    3.맵 축소의 2 차 정렬은 복합 키 패턴으로 해결되므로, (ZoneId, TImeStamp)와 같은 키를 작성하고 감속기에서 먼저 시간대를 반복하고 시간 소인을 초과하여 일일 최대치를 쉽게 평가할 수 있습니다.

    맵 축소의 2 차 정렬은 복합 키 패턴으로 해결되므로, (ZoneId, TImeStamp)와 같은 키를 작성하고 감속기에서 먼저 시간대를 반복하고 시간 소인을 초과하여 일일 최대치를 쉽게 평가할 수 있습니다.

  4. from https://stackoverflow.com/questions/5505735/mapreduce-secondary-sorting-filtering-how by cc-by-sa and MIT license