栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

hadoop方法将输出发送到多个目录

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

hadoop方法将输出发送到多个目录

您不需要第二份工作。我目前正在使用MultipleOutputs在我的一个程序中创建大量输出目录。尽管有30个以上的目录,但我只能使用几个MultipleOutputs对象。这是因为您可以在写入时设置输出目录,因此只能在需要时确定输出目录。如果要以不同的格式输出,则实际上只需要一个以上的namedOutput(例如,一种具有键:Text.class,值:Text.class,另一种具有键:Text.class和Value:IntWritable.class)

建立:

MultipleOutputs.addNamedOutput(job, "Output", TextOutputFormat.class, Text.class, Text.class);

减速器的设置:

mout = new MultipleOutputs<Text, Text>(context);

在减速器中调用mout:

String key; //set to whatever output key will beString value; //set to whatever output value will beString outputFileName; //set to absolute path to file where this should writemout.write("Output",new Text(key),new Text(value),outputFileName);

您可以用一段代码在编码时确定目录。例如,说您想按月份和年份指定目录:

int year;//extract year from dataint month;//extract month from dataString baseFileName; //parent directory to all outputs from this jobString outputFileName = baseFileName + "/" + year + "/" + month;mout.write("Output",new Text(key),new Text(value),outputFileName);

希望这可以帮助。

编辑:以上示例的输出文件结构:

base    2013        01        02        03        ...    2012        01        ...    ...


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/569951.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号