关于我的问题,我有一个用python编写的流处理程序。我注意到每个 Reducer 通过获取与多个键关联的所有值 sys.stdin .我更希望sys.stdin只具有与一个键关联的值。这在hadoop中是可能的吗?我认为每个键有一个不同的进程是完美的,但是找不到提供这种行为的配置。有人可以帮助我的信息或代码,可以帮助我这一点?
Reducer
sys.stdin
huus2vyu1#
每个Map器必须知道可用的缩减器的总数,因为它为每个缩减器生成一个输出文件。如果在开始作业之前知道键的数目,可以将作业配置为具有那么多的减速器。否则你就不走运了,因为在Map程序完成之后才能知道密钥的总数。
1cklez4t2#
是的,如果您知道Map器将发出的关键帧总数。您可以将其设置为job.setnumreducetasks(int n)另外,可以在mapred-site.xml中将并行运行的减速器总数定义为mapred.tasktracker.reduce.tasks.maximum它将加速还原过程。但是,每个reducer都作为jvm任务运行。因此,您的配置应该能够处理将生成的JVM的数量
2条答案
按热度按时间huus2vyu1#
每个Map器必须知道可用的缩减器的总数,因为它为每个缩减器生成一个输出文件。如果在开始作业之前知道键的数目,可以将作业配置为具有那么多的减速器。否则你就不走运了,因为在Map程序完成之后才能知道密钥的总数。
1cklez4t2#
是的,如果您知道Map器将发出的关键帧总数。您可以将其设置为job.setnumreducetasks(int n)
另外,可以在mapred-site.xml中将并行运行的减速器总数定义为
mapred.tasktracker.reduce.tasks.maximum
它将加速还原过程。但是,每个reducer都作为jvm任务运行。因此,您的配置应该能够处理将生成的JVM的数量