使用带有perl的Hadoop流来减少地图

时间:2015-11-18 12:07:31

标签: perl hadoop mapreduce hadoop-streaming

我想使用带有perl脚本的hadoop-streaming功能作为映射器和reducer。我发现this explanation部分回答了我的问题,但是它不包含reducer的功能,它们为每个键一起处理所有值。

例如,映射器可能会提取对,而reducer将输出每个产品的类别列表。这当然可以通过将所有reducer数据保存在内存中(就像我之前提到的示例中那样),但在许多情况下,这是不可扩展的。有没有办法让perl脚本一次获得每个键的所有值(比如普通的map-reduce作业)?

1 个答案:

答案 0 :(得分:1)

您可以使用cpan库Hadoop::Streaming

sub reduce 
{ 
    my ( $self, $key, $value_iterator) = @_;
    ...
    while( $value_iterator->has_next() ) { ... }
    $self->emit( $key, $composite_value );
}