복붙노트

[HADOOP] 어떻게지도-감소 하둡의 데이터 세트의 이동 평균을 중심으로 계산하려면?

HADOOP

어떻게지도-감소 하둡의 데이터 세트의 이동 평균을 중심으로 계산하려면?

나는 데이터 집합의 이동 평균을 중심으로 계산할.

예 입력 형식 :

quarter | sales      
Q1'11   | 9            
Q2'11   | 8
Q3'11   | 9
Q4'11   | 12
Q1'12   | 9
Q2'12   | 12
Q3'12   | 9
Q4'12   | 10

다음 수학적 표현과 데이터의 이동 평균을 계산하고, 평균 이동 중심

Period   Value   MA  Centered
1          9
1.5
2          8
2.5              9.5
3          9            9.5
3.5              9.5
4          12           10.0
4.5              10.5
5          9            10.750
5.5              11.0
6          12
6.5
7          9  

나는 일년 즉 네 분기의 매퍼 판매 가치를 제공 할 것입니다 RecordReader의 구현과 붙어있다. RecordReader 문제 질문 스레드 감사

해결법

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

    1.이것은 실제로 맵리 듀스 패러다임에서 완전히 행할; 그것은 '슬라이딩 윈도우'로 생각 될 필요가 없습니다. 대신 각 데이터 포인트는 네 MA 계산의 최대 관련이 있다는 사실을 생각하고 map 함수를 호출 할 때마다 하나 이상의 키 - 값 쌍을 방출 할 수 있음을 기억하십시오. 여기에 의사 코드는 다음과 같습니다

    이것은 실제로 맵리 듀스 패러다임에서 완전히 행할; 그것은 '슬라이딩 윈도우'로 생각 될 필요가 없습니다. 대신 각 데이터 포인트는 네 MA 계산의 최대 관련이 있다는 사실을 생각하고 map 함수를 호출 할 때마다 하나 이상의 키 - 값 쌍을 방출 할 수 있음을 기억하십시오. 여기에 의사 코드는 다음과 같습니다

    First MR job:
    
    map(quarter, sales)
        emit(quarter - 1.5, sales)
        emit(quarter - 0.5, sales)
        emit(quarter + 0.5, sales)
        emit(quarter + 1.5, sales)
    
    reduce(quarter, list_of_sales)
        if (list_of_sales.length == 4):
            emit(quarter, average(list_of_sales))
        endif
    
    
    Second MR job:
    
    map(quarter, MA)
        emit(quarter - 0.5, MA)
        emit(quarter + 0.5, MA)
    
    reduce(quarter, list_of_MA)
        if (list_of_MA.length == 2):
            emit(quarter, average(list_of_sales))
        endif
    
  2. ==============================

    2.나의 이해 이동 평균의 최고의에서 잘되지 않습니다 그 계산은 본질적으로 정렬 된 데이터를 통해 "슬라이딩 창"때문에 MR이 정렬 된 데이터의 비 교차 범위의 처리가되는 동안, 맵리 듀스 패러다임에 매핑됩니다. 내가 볼 않음 원인 및 해결 방법은 다음과 같습니다 : A)이 개 실행에 두 개의 서로 다른 파티션을 만들 수 있도록 사용자 정의 파티션 프로그램을 구현합니다. 각 실행에 당신의 감속기는 서로 다른 데이터 범위를 얻을 수 및 평균 곳 approprieate 이동 계산합니다 내가 설명하려고합니다 : 해야 감속기에 대한 첫 번째 실행 데이터에서 : R1 : Q1, Q2, Q3, Q4 R2 : Q5, Q6, Q7, Q8 ...

    나의 이해 이동 평균의 최고의에서 잘되지 않습니다 그 계산은 본질적으로 정렬 된 데이터를 통해 "슬라이딩 창"때문에 MR이 정렬 된 데이터의 비 교차 범위의 처리가되는 동안, 맵리 듀스 패러다임에 매핑됩니다. 내가 볼 않음 원인 및 해결 방법은 다음과 같습니다 : A)이 개 실행에 두 개의 서로 다른 파티션을 만들 수 있도록 사용자 정의 파티션 프로그램을 구현합니다. 각 실행에 당신의 감속기는 서로 다른 데이터 범위를 얻을 수 및 평균 곳 approprieate 이동 계산합니다 내가 설명하려고합니다 : 해야 감속기에 대한 첫 번째 실행 데이터에서 : R1 : Q1, Q2, Q3, Q4 R2 : Q5, Q6, Q7, Q8 ...

    여기에 일부 품질 평가 점수에 대한 이동 평균 계산합니다.

    다음 실행에 감속기 데이터를 같은 얻어야한다 : R1 : Q1 ... Q6 R2 : Q6 ... Q10 R3 : Q10..Q14

    이동 평균의 나머지를 계산합니다. 그럼 당신은 집계 결과를해야합니다.

    동일한 범위로하지만, 일부 시프트 나누어 각 시간 -이 두 가지 동작 모드를 정의한다 분할기 아이디어. 의사 코드에서이 같이 표시됩니다 : 파티션 = (+ 키의 SHIFT) / (MAX_KEY / numOfPartitions); 어디:  SHIFT는 구성에서 이동합니다.  MAX_KEY = 키의 최대 값. 나는 그들이 0으로 시작 편의상 가정합니다.

    이 특정 분할 제한되며 분할의 경계에 걸쳐 밀어 수 없기 때문에 RecordReader는 이럴는 해결책이 아니다.

    또 다른 해결책은 분할 입력 데이터 (는 InputFormat의 일부)의 사용자 로직을 구현하는 것이다. 분할과 유사한 2 개 개의 다른 슬라이드를 수행하기 위해 수행 할 수 있습니다.

  3. from https://stackoverflow.com/questions/12455088/how-to-calculate-centered-moving-average-of-a-set-of-data-in-hadoop-map-reduce by cc-by-sa and MIT license