关于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,条条大路通罗马

0
0

Hadoop 系统入门+核心精讲

从Hadoop核心技术入手,掌握数据处理中ETL应用,轻松进军大数据

2413 学习 · 909 问题

查看课程