====
案例:自定义outputFormat--将订单的好评与差评进行区分开来
2.1 需求
现在有一些订单的评论数据,需求,将订单的好评与差评进行区分开来,将最终的数据分开到不同的文件夹下面去,数据内容参见资料文件夹,其中数据第九个字段表示好评,中评,差评。0:好评,1:中评,2:差评
2.2 分析
程序的关键点是要在一个mapreduce程序中根据数据的不同输出两类结果到不同目录,这类灵活的输出需求可以通过自定义outputformat来实现
2.3 实现
实现要点:
1、 在mapreduce中访问外部资源
2、 自定义outputformat,改写其中的recordwriter,改写具体输出数据的方法write()
k1: LongWritable; v1: Text
k2: Text, 一行文本内容; v2: NullWritable
k3: Text; v3: NullWritable
代码实现:
package cn.itcast.demo4.outputformat;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.RecordWriter;
import org.apache.hadoop.mapreduce.TaskAttemptContext;
import java.io.IOException;
public class MyRecordWriter extends RecordWriter<Text,NullWritable> {
private FSDataOutputStream goodStream;
private FSDataOutputStream badStream;
public MyRecordWriter(FSDataOutputStream goodStream,FSDataOutputStream badStream){
dStream = goodStream;
this.badStream = badStream;
}
@Override
public void write(Text text, NullWritable nullWritable) throws IOException, InterruptedException {
本文发布于:2024-02-05 06:17:36,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170726065063765.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |