将 Hadoop 流与 perl 结合使用以进行 map reduce
Using Hadoop streaming with perl for map reduce
我想将 hadoop 流功能与 perl 脚本一起用作映射器和缩减器。我发现 this explanation 部分回答了我的问题,但它不包含缩减器的功能,可以为每个键一起处理所有值。
例如,mapper 可能会提取对,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 );
}
我想将 hadoop 流功能与 perl 脚本一起用作映射器和缩减器。我发现 this explanation 部分回答了我的问题,但它不包含缩减器的功能,可以为每个键一起处理所有值。
例如,mapper 可能会提取对,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 );
}