2013-02-18 3 views
-4

나는 최근에 hadoop에서 작업을 시작했으며 방금 그것에 관한 기본적인 이론 지식을 배웠다. 입력이 텍스트 파일에서 주어져야하는 과제를 해결하려고합니다. 예를 들어 input.txt (1 10 37 5 4 98 100 등)(자바 프로그래밍을 사용하는) hadoop에서 가장 큰 정수 값을 찾으려면

주어진 입력에서 가장 큰 정수를 찾아야합니다. 정수형). arraylist에서 입력을 전달하려고합니다. 그래서 첫 번째 정수를 나머지 정수와 비교할 수 있습니다 (for-loop 사용).

프로그램이 임의의 숫자 100 20 40 90 70을 말하면 입력 파일을 읽어야합니다. 그러면 출력이 100으로 표시되어야합니다. 나는 map 및 reduce 함수에서 wordcount 예제 코드를 수정하려고했습니다. 그러나 내가 처음부터 끝까지 코딩을 시작한 이래로, 내가 틀린 곳을 알아낼 수 없었다.

1)이 방법으로 해결책을 찾을 수 있습니까? 그렇다면 여기에 hadoop에 arraylist를 만들 수 없으며 몇 가지 팁이 필요합니다. :

2) 키 - 값 쌍 대신 '키'만 인쇄 할 수 있습니까? 그렇다면 제발 도와주세요. 필자는 인쇄 기능을 줄이기 위해 코드를 줄이려고했지만 오류가 발생했습니다.

나는 앞으로 나아갈 수있는 몇 가지 팁을 안내해주십시오. 당신

+0

것은 당신이 될 수 있을까를 입력과 예상 출력이 정확히 무엇인지에 대해 좀 더 구체적으로 설명하겠습니까? "가장 큰 가치"는 무엇입니까? 또한 단어 수로 태그를 붙였습니다. 그게 어떻게 관련이 있니? 그리고 마지막으로, [무엇을 시도 했습니까?] (http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

+0

프로그램이 임의의 숫자를 말한 입력 파일을 읽어야합니다. 100 20 40 90 70이면 출력은 100으로 표시되어야합니다. 저는 map에서 wordcount 예제로 코드를 수정하고 기능을 줄이려고했습니다. 그러나 내가 처음부터 끝까지 코딩을 시작한 이래로, 내가 틀린 곳을 알아낼 수 없었다. – user2085189

답변

1

는 하둡 자바 API 읽기 및 쓰기는 다음과 같은 기능을 감사 :

Map: Identity function 

Reduce (or Combine): (K, List<V>) -> (K, max(List<V>)) 

귀하의 코멘트에 대해서는, 맵리 듀스에는 ArrayLists가, 그 메모리에 적합하지 않을 것이다있다. 값 목록은 반복자로 전달되고 객체는 종종 메모리를 절약하기 위해 재사용되므로 내용을 그대로 유지하기 위해 의존 할 수 없습니다.

매퍼 API는 : http://hadoop.apache.org/docs/r1.1.1/api/org/apache/hadoop/mapreduce/Mapper.html

당신의 매퍼를 들어 다음과 같은 기능을 작성하거나 미리 구현 IdentityMapper를 사용할 수 있습니다.

public void map(K key, V val, Context context) 
throws IOException { 
    context.collect(key, val); 
} 

감속기 API : http://hadoop.apache.org/docs/r1.1.1/api/org/apache/hadoop/mapreduce/Reducer.html

귀하의 기능 (V implements Comparable<V> 가정) 할 것이며, 간결성을 위해, 우리는 값이 적어도 하나 개의 항목이 포함되어 있는지 말할 것이다 감소 :

public void reduce(K key, Iterator<V> values, Context context) 
throws IOException { 
    V max = values.next(); 
    while(values.hasNext()) { 
     V current = values.next(); 
     if(current.compareTo(max) > 0) 
      max = current; 
    } 
    context.collect(key, max); 
} 
+0

여기에 L이 무엇입니까? 열쇠 요? – user2085189

+0

죄송합니다, 오타. 그것은'K'라고되어있었습니다. –

+0

오케이. 입력이 어떻게 hadoop의 배열로 전달되는지 말해 줄 수 있습니까? – user2085189

관련 문제