使用avromultipleoutputs创建多个输出文件

mbskvtky  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(279)

我有一个使用avrokeyoutput作为输出格式的reducer。默认情况下,mapreduce会将我的所有密钥写入一个输出文件。我想为每个键值写入一个单独的输出文件。avro提供了avromultipleoutputs方法,但示例很少。apacheavromultipleoutputs提供的一个示例演示了如何在定义作业时预配置各种输出。示例显示:
工作:
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); 但是我不知道我需要多少文件或者它们的名字是什么,因为它是基于我的reducer中的键值。如何修改它以适应动态文件命名?

0sgqnhkj

0sgqnhkj1#

在这种情况下可以使用的策略:
使用仅Map作业(零减少任务)
具有单个命名的多输出配置
map() 使用中基本输出路径的键值 AvroMultipleOutputs.write(String namedOutput, Object key, Object value, String baseOutputPath)

相关问题