关于ReduceJoin中,判断数据来自哪个文件,有没有合理的办法?
来源:10-3 ReduceJoin功能实现

PhiloChou
2020-12-09
老师您好,在「10-3 ReduceJoin功能实现」一节中,在MyMapper里,我们使用了切割后的字段数量来判断数据来自哪个文件,但是有可能两个输入的字段数量是相同的,结构也类似,用字段数量判断,感觉怪怪的。
@Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String[] splits = value.toString().split("\t");
// join操作,有两份文件进来,我们先用简单的字段长度来判断
int length = splits.length;
if (length == 3) {
// dept
...
} else if (length == 8) {
// emp
...
}
}
还有没有其他方法判断数据来自哪里呢?比如可以知道数据来自哪个文件?
又或者,我们是否可以把文件名写到文件第一列?
比如:
@Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String[] splits = value.toString().split("\t");
if ("d".equals(splits[0]) {
// dept
...
} else if ("e".equals(splits[0])) {
// emp
...
}
}
写回答
1回答
-
Michael_PK
2020-12-09
可以的呢,只要能区分的出来都OK,条条大路通罗马
00
相似问题