MapReduce中自定义文件输出名
来源:互联网 发布:标点符号检查软件 编辑:程序博客网 时间:2024/05/17 09:31
MR的输出结果默认为part-r-00000,我们可自定义易识别的名字替代part,如score-r-00000
job.setOutputFormatClass(MyOut.class);MyOut.setOutputName(job, "score");//自定义输出名job.waitForCompletion(true); //自定义MyOut类继承TextOutPutFormat,并覆盖其中的setOutPutName方法,此方法在FileOutputFormat类中为protected修饰,不能直接调用private static class MyOut extends TextOutputFormat{ protected static void setOutputName(JobContext job, String name) { job.getConfiguration().set(BASE_OUTPUT_NAME, name); }}
上述方法仅能简单的替代文件名part,要想全部自定义文件名,需要重写RecordWriter
/** * 自定义MyFileOutputFormat继承FileOutputFormat,实现其中的getRecordWriter方法; * 该方法返回一个RecordWriter对象,需先创建此对象,实现其中的write、close方法; * 文件通过FileSystem在write方法中写出到hdfs自定义文件中 */public class MyFileOutputFormat extends FileOutputFormat<Text, Text> {@Overridepublic RecordWriter<Text, Text> getRecordWriter(TaskAttemptContext job)throws IOException, InterruptedException {FileSystem fs = FileSystem.newInstance(job.getConfiguration());//自定义输出路径及文件名,把数学成绩和英语成绩分别输出到不同的文件中final FSDataOutputStream math = fs.create(new Path("/score/math.txt"));final FSDataOutputStream english = fs.create(new Path("/score/english.txt"));RecordWriter<Text, Text> recordWriter = new RecordWriter<Text, Text>() {@Overridepublic void write(Text key, Text value) throws IOException,InterruptedException {if(key.toString().contains("math")){math.writeUTF(key.toString());}if(key.toString().contains("english")){english.writeUTF(key.toString());}}@Overridepublic void close(TaskAttemptContext context) throws IOException,InterruptedException {if (math!=null) {math.close();}if (english!=null) {english.close();}}};return recordWriter;}}
0 0
- MapReduce中自定义文件输出名
- MapReduce中自定义文件输出名
- 实现mapreduce多文件自定义输出
- 实现mapreduce多文件自定义输出
- 实现mapreduce多文件自定义输出
- mapreduce实现多文件自定义输出
- 实现MapReduce多文件自定义输出
- Hadoop的MapReduce中多文件输出
- Hadoop的MapReduce中多文件输出
- Hadoop的MapReduce中多文件输出
- Hadoop的MapReduce中多文件输出
- Hadoop的MapReduce中多文件输出 .
- Hadoop的MapReduce中多文件输出
- MapReduce多文件输出
- MapReduce之多文件输出
- [Hadoop系列]Hadoop的MapReduce中多文件输出
- [Hadoop系列]Hadoop的MapReduce中多文件输出
- 在MapReduce中利用MultipleOutputs输出多个文件
- c++ opencv 动态内存
- 《程序员修炼之道》读书笔记
- 阿里前端面试题
- 一维树状数组
- Eclipse下使用maven创建多模块项目
- MapReduce中自定义文件输出名
- POJ 2196 Specialized Four-Digit Numbers 水
- android android:duplicateParentState="true" "false"
- TCP模型及其重点协议总结
- Android中的onActivityResult和setResult方法的使用
- Subsets
- Android Sqlite 导入CSV文件
- mybatis 映射准备工作
- 黑马程序员---OC set方法的内存管理