我想使用带有perl脚本的hadoop-streaming功能作为映射器和reducer。我发现this explanation部分回答了我的问题,但是它不包含reducer的功能,它们为每个键一起处理所有值。
例如,映射器可能会提取对,而reducer将输出每个产品的类别列表。这当然可以通过将所有reducer数据保存在内存中(就像我之前提到的示例中那样),但在许多情况下,这是不可扩展的。有没有办法让perl脚本一次获得每个键的所有值(比如普通的map-reduce作业)?
答案 0 :(得分:1)
您可以使用cpan库Hadoop::Streaming
sub reduce
{
my ( $self, $key, $value_iterator) = @_;
...
while( $value_iterator->has_next() ) { ... }
$self->emit( $key, $composite_value );
}