복붙노트

[HADOOP] hadoop의 여러 폴더에 쓰기?

HADOOP

hadoop의 여러 폴더에 쓰기?

내 출력을 다른 폴더로 감속기에서 분리하려고합니다.

My dirver has the following code:
 FileOutputFormat.setOutputPath(job, new Path(output));
            //MultipleOutputs.addNamedOutput(job, namedOutput, outputFormatClass, keyClass, valueClass)
            //MultipleOutputs.addNamedOutput(job, namedOutput, outputFormatClass, keyClass, valueClass)
            MultipleOutputs.addNamedOutput(job, "foo", TextOutputFormat.class, NullWritable.class, Text.class);
            MultipleOutputs.addNamedOutput(job, "bar", TextOutputFormat.class, Text.class,NullWritable.class);
            MultipleOutputs.addNamedOutput(job, "foobar", TextOutputFormat.class, Text.class, NullWritable.class);

And then my reducer has the following code:
mos.write("foo",NullWritable.get(),new Text(jsn.toString()));
mos.write("bar", key,NullWritable.get());
mos.write("foobar", key,NullWritable.get());

But in the output, I see:

output/foo-r-0001
output/foo-r-0002
output/foobar-r-0001
output/bar-r-0001


But what I am trying is :

output/foo/part-r-0001
output/foo/part-r-0002
output/bar/part-r-0001

출력 / foobar / part-r-0001

어떻게해야합니까? 감사

해결법

  1. ==============================

    1.이 MultipleOutputs를 의미하는 경우 가장 간단한 방법은 다음 중 하나를 수행하는 것입니다.

    이 MultipleOutputs를 의미하는 경우 가장 간단한 방법은 다음 중 하나를 수행하는 것입니다.

    귀하의 경우, 포인트 1이므로 다음을 변경하십시오 -

    mos.write("foo",NullWritable.get(),new Text(jsn.toString()));
    mos.write("bar", key,NullWritable.get());
    mos.write("foobar", key,NullWritable.get());
    

    에,

    mos.write("foo",NullWritable.get(),new Text(jsn.toString()), "foo/part");
    mos.write("bar", key,NullWritable.get(), "bar/part");
    mos.write("foobar", key,NullWritable.get(), "foobar/part");
    

    여기서 "foo / part", "bar / part"및 "foobar / part"는 baseOutputPath에 해당합니다. 따라서 디렉토리 foo, bar 및 foobar가 생성되고 그 part-r-xxxxx 파일 내에 생성됩니다.

    위의 2 번 지점을 시도해 볼 수도 있습니다. 실제로는 이름이 지정된 출력이 필요하지 않습니다.

    필요한 경우 더 명확히하기 위해 나에게 연락하십시오.

  2. from https://stackoverflow.com/questions/19328136/writing-to-multiple-folders-in-hadoop by cc-by-sa and MIT license