Sorting 在Reduce端连接中按值排序的Hadoop

Sorting 在Reduce端连接中按值排序的Hadoop,sorting,hadoop,Sorting,Hadoop,因此,我正在进行一些Hadoop培训,以了解实际情况,我正在尝试进行一个reduce-side连接,除了第二类之外,我还可以使用它 因此,最基本的是: 两个文件 一个人有球员、团队、薪水 另一个有球员、球队、本垒打 输出应该是团队、球员、工资、本垒打 纽约大都会应该被划分成一个文件,而所有其他糟糕的球队应该被划分成另一个文件 这些文件中的每一个都应该按球队排序,其次是按球员工资排序 我正在使用球队的钥匙,playerID加入,这很有效,但我不知道如何按工资排序,因为这两个文件中只有一个有 这是一

因此,我正在进行一些Hadoop培训,以了解实际情况,我正在尝试进行一个reduce-side连接,除了第二类之外,我还可以使用它

因此,最基本的是:

两个文件
一个人有球员、团队、薪水
另一个有球员、球队、本垒打

输出应该是团队、球员、工资、本垒打

纽约大都会应该被划分成一个文件,而所有其他糟糕的球队应该被划分成另一个文件

这些文件中的每一个都应该按球队排序,其次是按球员工资排序

我正在使用球队的钥匙,playerID加入,这很有效,但我不知道如何按工资排序,因为这两个文件中只有一个有

这是一项可能的任务,还是只能通过地图端连接来完成?

为此,“纽约大都会队应该划分为一个文件,而所有其他糟糕的团队应该划分为另一个文件。”

您可以使用自定义分区器,并为纽约大都会返回0,为其他人返回1

关于薪资排序,您是对的-使用map-side-join是有效的。如果数据集不是很大,您可以通过在reducer输入上循环两次在reducer中进行排序。在第一个循环中,您必须构建一些内存集合来存储排序后的数据,在第二个循环中,您可以发出数据。但是,在较大的数据集上,它的效率非常低——特别是如果团队中的每个人都有太多的玩家,那么它的速度会很慢,并且可能会遇到内存不足的问题