복붙노트

[HADOOP] 우리는 어떻게지도 함수는 맵리 듀스 프로그램에서 호출 횟수를 계산합니까?

HADOOP

우리는 어떻게지도 함수는 맵리 듀스 프로그램에서 호출 횟수를 계산합니까?

내 입력 데이터에 대해 특정 작업을하고 맵리 듀스 프로그램을 사용하여 HDFS에 기록해야한다. 내 입력 데이터처럼 보인다

abc  
some data  
some data  
some data  
def  
other data  
other data  
other data 

와 ABC는 DEF 헤더 및 일부 데이터 탭 공간이 기록되어있는 것과 동일한 방법으로 계속합니다.

내 작업은 헤더를 제거하고 같은 그 아래 기록에 추가하는 것입니다

some data abc  
some data abc  
some data abc  
other data def  
other data def  
other data def  

각 헤더 (50 개) 기록을해야합니다.

그것은 한 번에 한 줄씩 읽어 그래서 기본 레코드 리더를 사용하고 있습니다

내가지도 기능은 n 번째 시간 동안 호출 된 것을 알고 어떻게 지금 내 문제는? 나는 그것을 알고있는 카운터가 있습니까? 나뿐만 문자열로 헤더를 추가하는 카운터를 사용할 수 있도록

if (counter % 50 ==0 )
   *some code*

아니면 정적 변수는 유일한 방법은?

해결법

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

    1.당신은 지금까지 처리 얼마나 많은 개수를 유지하는 멤버 변수를 사용할 수 있습니다. 멤버 변수는 인스턴스 변수 때마다지도 기능이 호출되는 초기화되지 않습니다. 당신은 매퍼 설정 방법에 그것들을 초기화 할 수 있습니다.

    당신은 지금까지 처리 얼마나 많은 개수를 유지하는 멤버 변수를 사용할 수 있습니다. 멤버 변수는 인스턴스 변수 때마다지도 기능이 호출되는 초기화되지 않습니다. 당신은 매퍼 설정 방법에 그것들을 초기화 할 수 있습니다.

    물론, 당신은 카운터를 유지하기위한 정적 변수를 사용할 수 있습니다.

    HDFS의 데이터 블록에 저장됩니다, 당신은 어떻게 데이터가 두 개의 블록으로 분할 될 때 처리 할 것입니다.

    두 블록 간의 데이터 분할을 처리하려면 기어를해야 할 수도 있습니다. 감속기의 속성은 특정 키와 관련된 모든 데이터 (값)가 항상 동일한 (단일) 감속기로 전송된다. 감속기의 입력 키와 데이터의 사건리스트에 값의리스트이다. 그래서 당신은 당신의 요구 사항에 따라 아주 쉽게 저장할 수 있습니다.

    최적화 : 당신은 데이터 전송을 최적화하기위한 결합기와 같은 감속기 코드를 사용할 수 있습니다.

    아이디어 :이 그대로 매퍼는 키와 값을 방출합니다. 만회 핵심 데이터를받을 때 이제 목록 <값>, 당신의 모든 값은 이미 맵리 듀스 프레임 워크에 의해 결합된다. 당신은 다시 방출 할 필요가 있습니다. 이것은 당신이 찾고있는 출력됩니다.

  2. from https://stackoverflow.com/questions/32758322/how-do-we-count-the-number-of-times-a-map-function-is-called-in-a-mapreduce-prog by cc-by-sa and MIT license