大数据全系列 教程
1869个小节阅读:466.9k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
mysql表分为两类:
如果基本维度表中有对应的数据,则获取对应的id;如果没有对应信息则先插入基本维度数据表中,获取id后,再添加到结果表中。
TransformerOutputFormat类中的RecordWriter用于向MySQL输出。
cn.itbaizhan.tranformer.mr.NewInstallUserReducer
context.write(key,mapWritableValue); //Ctrl+点击
org.apache.hadoop.mapreduce.TaskInputOutputContext
void write(KEYOUT var1, VALUEOUT var2) throws IOException, InterruptedException; //Ctrl+Alt+B
选择org.apache.hadoop.mapreduce.lib.chain.ChainReduceContextImpl
xxxxxxxxxx
private final RecordWriter<KEYOUT, VALUEOUT> rw;
public ChainReduceContextImpl(ReduceContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT> base, RecordWriter<KEYOUT, VALUEOUT> output, Configuration conf) {
this.base = base;
this.rw = output;
this.conf = conf;
}
public void write(KEYOUT key, VALUEOUT value) throws IOException, InterruptedException {
this.rw.write(key, value);//Ctrl+单击
}
org.apache.hadoop.mapreduce.RecordWriter
xxxxxxxxxx
public abstract class RecordWriter<K, V> {
public RecordWriter() {
}
public abstract void write(K var1, V var2) throws IOException, InterruptedException;//Ctrl+Alt+B
public abstract void close(TaskAttemptContext var1) throws IOException, InterruptedException;
}
选择TransformerRecordWriter,找到了我们自定义类的write方法中。
xxxxxxxxxx
@Override
/**
* 当reduce任务输出数据是,由计算框架自动调用。把reducer输出的数据写到mysql中
* key:StatsUserDimension类对象
* value:MapWritableValue类的对象
*/
public void write(BaseDimension key, BaseStatsValueWritable value) throws IOException, InterruptedException {
......
}
TransformerRecordWriter类的write方法实现原理分析
StatsUserNewInstallUserCollector
DimensionConverterImpl