大数据全系列 教程
1869个小节阅读:465.1k
目录
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
由于Reducer类处理的后结果需要写入到MySQL中,所以需要指定OutputFormat类
xxxxxxxxxx
job.setOutputFormatClass(TransformerOutputFormat.class);
TransformerOutputFormat这个类为何可以通过job.setOutputFormatClass()方法进行设置呢?
xxxxxxxxxx
public void setOutputFormatClass(Class<? extends OutputFormat> cls)
所以TransformerOutputFormat类需要是OutputFormat类后代类(比如子类)。
xxxxxxxxxx
public class TransformerOutputFormat extends OutputFormat<BaseDimension, BaseStatsValueWritable>
job作业的Reduce处理后输出的key和value的类型分别如下:
xxxxxxxxxx
job.setOutputKeyClass(StatsUserDimesion.class);
job.setOutputValueClass(MapWritableValue.class);
StatsUserDimesion是BaseDimension类的后代类,而MapWritableValue是BaseStatsValueWritable子类。
xxxxxxxxxx
public class StatsUserDimesion extends StatsDimesion
public abstract class StatsDimesion extends BaseDimension
public class MapWritableValue extends BaseStatsValueWritable
TransformerOutputFormat中重要的两个部分:
xxxxxxxxxx
@Override
public RecordWriter<BaseDimension, BaseStatsValueWritable> getRecordWriter(TaskAttemptContext context)
public class TransformerRecordWriter extends RecordWriter<BaseDimension, BaseStatsValueWritable> {
......
@Override
/**
* 当reduce任务输出数据是,由计算框架自动调用。把reducer输出的数据写到mysql中
* key:StatsUserDimension类对象
* value:MapWritableValue类的对象
*/
public void write(BaseDimension key, BaseStatsValueWritable value) throws IOException, InterruptedException {
......
}
write(key:维度组合对象,value:mapWritableValue):当reducer类中调用context.write()方法是被调用。向mysql中插入数据。