2013-03-15 2 views
2

저는 Hadoop에 새롭게 추가되었습니다. 입력 파일을 구문 분석하고 값과 함께 특정 패턴을 추출하는 MapReduce 프로그램을 작성했습니다. 필자는 그것을 쉽게 줄일 수 있으며 최종 결과물은 키와 값 쌍을 가진 파일입니다.hadoop 결과에 집계 키 및 값 표시

public class EReducer extends MapReduceBase implements Reducer<Text, Text, Text, Text>  
{ 

    private Text outputKey1 = new Text(); 
    private Text outputValue1 = new Text(); 


    public void reduce(Text equipKey1, Iterator<Text> equipValues1, 
        OutputCollector<Text, Text> results1, Reporter reporter1) throws IOException { 
      String output1 = ""; 
    while(equipValues1.hasNext()) 
      { 
        Text equi= equipValues1.next(); 
        output1 = output1 + equi.toString(); 
      } 

        outputKey1.set(equipKey1.toString()); 
        outputValue1.set(output1); 
        results1.collect(outputKey1, outputValue1); 
} 

문제는 파일의 시작 부분에 총 키 수와 총계로 특정 키의 총 값 수를 표시해야한다는 것입니다.

키 : 날짜

값 : 해프닝.

뭔가

12/03/2013 CMB ate pizza 
      He went to a mall 
      He met his friend 

같은 날짜 2013년 12월 3일에 완전히 3 사건이 있었다. 마찬가지로 날짜와 사건이 설정됩니다.

마지막으로 나는 "날짜 수"에 "이 동작 수"라는 표시를해야합니다. 날짜에 12/03/2013 등의 작업이 3 번있었습니다.

어떻게해야합니까? 도움이 될 것입니다.

+1

내가 그렇게 할 수있는 이동에있어 단지 가능한 조각 (당신은 모든 간단하여 이벤트를 구문 분석하기 위해 UDF를 구현해야합니다) 세부 사항 ATM을 제공하지는 않지만 http://www.slideshare.net/zhengwenshen/201을 확인하고 싶을 수도 있습니다. 30201-mapreduce-design-patterns (슬라이드 53부터) (파티셔닝/비닝 패턴). –

+0

ur 도움에 감사드립니다. 뭔가를 찾으면 나를 도우는 것을 잊지 마세요. 사전에 감사드립니다 .. :) – BinaryMee

답변

0

직접 답이 맞는지는 모르겠지만 출력과 함께 집계를 저장하지는 않습니다. Pig가 집계를 얻는 것을 고려하십시오. 이 사용 사례에는 적합합니다.

또한 "파일 시작"질문을 이해하지 못했습니다. 그래서 파일 "부분-R-00000는"

12/01/2012 something something1 something2 
12/02/2012 abc abc1 abc2 

을하고 싶은 작업 할 값 그러나 나는 그것을 집계와 돼지를 사용하지 않고 감속기에서 방출 단지 데이터를 저장 향하다 것 - 감속기 작업은 하나 이상의 키를 가질 수있다 당신이 필요로하는 수를 얻기 위해 그들 물마루 실행

a = LOAD '/path/to/mroutput' as (dt:chararray, evdata:chararray); 
b = foreach a generate dt, com.something.EVParser(evdata) as numberofevents; 
c = store b into '/path/to/aggregateddata';