与我的问题相关,我有一个用 Python 编写的流式处理过程。
我注意到每个Reducer
都通过sys.stdin
.
我希望 sys.stdin 仅具有与一个键关联的值。Hadoop有可能吗?我认为每个键的不同进程将是完美的,但找不到提供这种行为的配置。
有人可以帮助我提供可以帮助我的信息或代码吗?
与我的问题相关,我有一个用 Python 编写的流式处理过程。
我注意到每个Reducer
都通过sys.stdin
.
我希望 sys.stdin 仅具有与一个键关联的值。Hadoop有可能吗?我认为每个键的不同进程将是完美的,但找不到提供这种行为的配置。
有人可以帮助我提供可以帮助我的信息或代码吗?
每个 mapper 都必须知道可用的 reducer 总数,因为它为每个 reducer 生成一个输出文件。如果您在开始作业之前知道键的数量,则可以将作业配置为具有那么多减速器。否则你就不走运了,因为直到映射器完成后才能知道键的总数。
是的,如果您知道映射器将发出的键总数。您可以将其设置为 job.setNUmReduceTasks(int n)
此外,可以并行运行的减速器总数可以在 mapred-site.xml 中定义为
mapred.tasktracker.reduce.tasks.maximum
它将加快减少过程。但是,每个减速器都作为 jvm 任务运行。因此,您的配置应该能够处理将产生的 jvm 数量