我想将hadoop-streaming功能与perl脚本一起用作映射器和reducer。我发现this explanation部分回答了我的问题,但是它不包含reducer的功能,该功能将每个键的所有值一起处理。
例如,映射器可能提取对,而缩减器将输出每个产品的类别列表。当然,这可以通过将所有reducer数据保存在内存中来实现(就像我之前提到的示例一样),但是在许多情况下,这是不可伸缩的。有没有办法让perl脚本一次获取每个键的所有值(就像普通的map-reduce作业一样)?
最佳答案
您可以使用cpan库Hadoop::Streaming
sub reduce
{
my ( $self, $key, $value_iterator) = @_;
...
while( $value_iterator->has_next() ) { ... }
$self->emit( $key, $composite_value );
}
关于perl - 将Hadoop流与Perl结合使用以减少 map ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33779654/