AvroKeyOutput을 출력 형식으로 사용하는 감속기가 있습니다. 기본적으로 MapReduce는 모든 키를 단일 출력 파일에 씁니다. 각 키 값에 대해 별도의 출력 파일에 쓰고 싶습니다. Avro는 AvroMultipleOutputs 메서드를 제공하지만 예제는 슬림합니다. Apache AvroMultipleOutputs에서 제공하는 것은 작업을 정의 할 때 다양한 출력을 미리 구성하는 방법을 보여줍니다. 예는 보여줍니다
JOB :
AvroMultipleOutputs.addNamedOutput(job, "avro1", AvroOutputFormat.class, schema);
AvroMultipleOutputs.addNamedOutput(job, "avro2", AvroOutputFormat.class, null);
감속기 : 내가 필요가 얼마나 많은 파일 모르는
amos = new AvroMultipleOutputs(conf);
amos.getCollector("avro1", reporter).collect(datum);
amos.getCollector("avro2", "A", reporter).collect(datum);
amos.getCollector("avro3", "B", reporter).collect(datum);
AvroMultipleOutputs를 사용하여 여러 출력 파일 만들기
그러나 또는 그들의 이름이 무엇인지, 그것은 내 감속기에서 나오는 키 값. 동적 파일 이름 지정을 수용하기 위해이를 어떻게 수정할 수 있습니까?
감사합니다.이 방법은 훨씬 간단합니다. 나는 그것을 과소 평가했다. – RedRobin2202
지도 전용 작업없이이를 수행 할 수있는 방법이 있습니까? – technocrat
예. 나는 당신이 여전히 Map-Reduce로 이것을하고 싶다고 가정하고 있습니다, 그렇죠? 그룹화 전략을 고려해야하며 각 (r) 감속기에서 (n) 키를 얻는다 고 가정하면 최대 r x n 개의 출력 파일을 얻을 수 있습니다. 다시 말하지만 하나의 이름을 사용하고 baseOutputPath 값에 키의 문자열 값을 사용하십시오. – ohhorob