我有两个不同的数据集。

***Comments.csv:***

id
userid

***Posts.csv-***

id
post_type
creationdate
score
viewcount
owneruserid
title
answercount
commentcount

我有显示名称,没有。具有最高声誉的用户创建的帖子数量。

我知道Map Reduce如何使用单个文件工作的代码。我知道如何为Job设置多个文件。但是我不知道如何在Mapper级别上连接不同的数据集。

我不确定是否可以使用一个Mapper将这两个数据集结合在一起。
    public void map(Object key, Text value, Context context
                    ) throws IOException, InterruptedException {
      String[] data = value.toString().split(",");
      // Logic to write values to context

    }

MultipleInputs.addInputPath(job,new Path(args[0]),TextInputFormat.class,CommentsMapper.class);
MultipleInputs.addInputPath(job,new Path(args[1]),TextInputFormat.class,PostsMapper.class);

我的查询:
1. Map side join or Reduce side join :  Which one is better?.

2. Is it possible to use single Mapper or Reducer? If yes, how is it possible?

请提供输入以简单的方式实现此目的。我经历了关于多个数据文件到Job的Stackoverflow问题,但是所有这些文件的输入格式都是相同的。就我而言,输入格式是不同的。

提前致谢。

最佳答案

要执行reduce side join,可以让 map 实现发出
(K,V) -> (JOIN_KEY,DATA)

然后,在简化方面,您将可以访问与该键关联的所有值。例如,如果您想确保列表中的文章数据首先位于列表中,然后所有的注释数据都位于列表之后,则可以实现第二排序。

Secondary Sort

09-25 16:30
查看更多