2011-12-21 2 views
0

출력 파일 이름 생성에 의문이 있습니다. Hadoop-0.19.2를 사용 중이고 입력 폴더 (/ data/inp/20111203_12345,/data/inp/20111204_12345)에 두 개의 입력 파일이 있고 출력 폴더를 생성하고 싶습니다 (/ data/out/20111203_12345)./part-0000x,/data/out/20111204_12345/part-0000x)사용자 지정 출력 파일 이름은 어떻게 생성합니까?

Map Reduce 프로그램은 한 번만 호출됩니다.

+0

무엇이 당신의 질문 이냐 ...? 프로그래밍과 어떤 관련이 있습니까? – wormsparty

답변

0

입력 파일과 출력 파일 사이에 일대일 매핑이 있으므로 입력 파일에 데이터가 병합되지 않는다고 가정 할 수 있습니다.

1) 매퍼에서 일부 처리를 수행하고 KV 쌍을 filePath/value로 출력합니다. 그런 다음 특정 파일에 대한 모든 데이터가 단일 매퍼로 이동합니다. 매퍼에서 다음을 구현하여 filePath를 얻습니다.

void configure(JobConf conf) { 
    filePath = conf.get("map.input.file"); 
} 

filePath에는 디렉토리를 포함한 입력 파일 이름이 포함됩니다.

2) MultipleOutputformat은 여러 파일에 데이터를 쓸 수 있으며 출력 파일 이름은 출력 KV 쌍에서 파생 될 수 있습니다. 감속기의 키는 출력 파일 이름을 파생시키는 데 사용할 수있는 입력 파일 디렉토리 및 이름입니다.

위의 방법을 사용하면 각 감속기가 단일 파일의 데이터를 처리하므로 입력 파일이 큰 경우 감속기가 병목 일 수 있습니다. 나는이 일을하는 더 좋은 방법을 생각할 수 없었다.

+0

고마워. 그것은 나를 움직이게했다. – Thamizh

관련 문제