App::Hachero::Plugin::Parse::HadoopReduce - parses line from A::H::P::OutputLine::HadoopMap


App-Hachero documentation Contained in the App-Hachero distribution.

Index


Code Index:

NAME

Top

App::Hachero::Plugin::Parse::HadoopReduce - parses line from A::H::P::OutputLine::HadoopMap

SYNOPSYS

Top

  ---
  plugins:
    - module: Parse::HadoopReduce

DESCRIPTION

Top

parses line from A::H::P::OutputLine::HadoopMap

implemented hooks

* parse

AUTHOR

Top

Takaaki Mizuno <cpan@takaaki.info>

Nobuo Danjou <nobuo.danjou@gmail.com>

SEE ALSO

Top

App::Hachero

Hadoop http://hadoop.apache.org/


App-Hachero documentation Contained in the App-Hachero distribution.

package App::Hachero::Plugin::Parse::HadoopReduce;
use strict;
use warnings;
use base 'App::Hachero::Plugin::Base';
use UNIVERSAL::require;

sub parse : Hook {
    my ( $self, $context, $args ) = @_;
    my ($key, $value) = split(/\t/,$context->currentline);
    my $VAR1; # for Data::Dumper;
    {
        no warnings;
        eval $value;
    }
    my $package = ref $VAR1;
    unless ($package) {
        $context->currentline('');
        return;
    }
    $self->{required} ||= [];
    unless (grep {$_ eq $package} @{$self->{required}}) {
        if (my $pkg = $context->class_component_load_plugin_resolver($package)) {
            $pkg->require;
        } else { 
            $package =~ s/::([^:]+?)$//;
            $package->require;
        }
        push @{$self->{required}}, $package;
    }
    my ($prime, $second) = split('-',$key);
    my $info = $context->currentinfo;
    $info->{hadoop_reduce}->{$prime} = $VAR1;
    my $result = $context->result->{$prime};
    if ($result) {
        my ($value) = $VAR1->values;
        $result->push($value->hashref);
    } else {
        $context->result->{$prime} = $VAR1;
    }
}

1;
__END__