2011-09-26 5 views
1

Hadoop은 키마다 값을 그룹화하고 동일한 reduce 작업으로 보냅니다. hdfs 파일에 다음 행이 있다고 가정합니다. 1 호선 2 호선 세 번째 줄 .... 린넨지도 작업에 나는 파일 이름과 라인을 인쇄 할 수 있습니다. 줄이면 나는 다른 주문을 받는다. 시험 키 => {line3, line1, line2, ....} 이제 다음 문제가있다. 나는 파일에 거짓말을하기 위해이 값 목록을 얻고 싶습니다. => {line1, line2, ... linen} 어떤 방법이 있습니까?맵 축소 값리스트 순서 문제

답변

2

TextInputFormat을 사용하는 경우 매퍼 입력으로 <LongWritable, Text>이 표시됩니다. LongWritable 부분 (또는 키)은 파일의 행 위치입니다 (행 번호 아님, 파일의 시작 부분부터 위치). 이 부분을 사용하여 첫 번째 줄을 추적 할 수 있습니다. 예를 들어 매퍼는 현재 수행중인대로 <Filename, Line> 대신 <Filename, TextPair(Position, Line)>을 출력으로 출력 할 수 있습니다. 그런 다음 감속기가 첫 번째 파트 (위치)를 기반으로하는 키를 정렬 할 수 있으며 동일한 순서로 줄을 다시 가져와야합니다.

+0

답해 주셔서 감사합니다 – ali

+0

둘 이상의 감속기가있는 경우 줄이 서로 다른 감속기로 연결됩니다. i/p와 o/p의 순서가이 방법을 사용하여 동일해야한다면, 하나의 감속기 만 있어야합니다. –

+0

아니 Praveen, 당신이 올바른 생각 arent, 내가 API를 hdfs에 직접 출력을 사용합니다, 그 때문에 나는 올바른 파일을 가지고 – ali