Hadoop-HDFS-Command
view release on metacpan or search on metacpan
lib/Hadoop/HDFS/Command.pm view on Meta::CPAN
}
if ( $stderr ) {
warn "Warning from external command: $stderr";
}
return $self->_split_on_newlines( $stdout );
}
sub _split_on_newlines {
my $self = shift;
my $rv = shift;
$rv =~ s{ \A \s+ }{}xms;
$rv =~ s{ \s+ \z }{}xms;
return split m{ \n+ }xms, $rv;
}
sub _log {
my $self = shift;
return if ! $self->enable_log;
my($level, $tmpl, @param) = @_;
my $msg = sprintf "[%s] %s\n", uc $level, $tmpl;
printf STDERR $msg, @param;
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Hadoop::HDFS::Command
=head1 VERSION
version 0.007
=head1 SYNOPSIS
use Hadoop::HDFS::Command;
my $hdfs = Hadoop::HDFS::Command->new;
my @rv = $hdfs->$command( @command_args );
=head1 DESCRIPTION
This is a simple wrapper around the hdfs commandline to make them easier to
call from Perl and parse their output.
The interface is partially done at the moment (see the implemented wrappers
down below).
You can always use the WebHDFS to do similar operations instead of failling
back to the commandline. However there are several benefits of using the
cli; i) you'll end up with a single C<JVM> invocation, so the response
might be faster ii) Some functionality / endpoints might be buggy for WebHDFS
but might work with the cli (for example escaping certain values is broken
in some versions, but works with the cli).
=head1 NAME
Hadoop::HDFS::Command - Wrappers for various hadoop hdfs cli commands
=head1 METHODS
=head2 new
The constructor. Available attributes are listed below.
=head3 cmd_hdfs
Default value is C</usr/bin/hdfs>. This option needs to be altered if you have
the C<`hdfs`> command in some other place.
=head3 enable_log :Bool
Can be used to enable the internal logging feature. Disabled by default.
=head2 dfs
One of the top level commands, including an interface to the sub-commands
listed below. The calling convention of the sub commands is as simple as:
my @rv = $hdfs->dfs( \%options, $sub_command => @subcommand_args );
# options hash is optional
my @rv = $hdfs->dfs( $sub_command => @subcommand_args );
Available options are listed below:
=over 4
=item ignore_fail :Bool
Global.
=item silent :Bool
Global.
=item want_epoch :Bool
Only used for C<ls>. Converts timestamps to epoch.
=item callback :CODE
Only used for C<ls>. The callback always needs to return true to continue
processing, returning false from it will short-circuit the processor.
=back
=head3 du
The C<@subcommand_args> can have these defined: C<-s>, C<-h>.
my @rv = $hdfs->dfs( du => @subcommand_args => $hdfs_path );
my @rv = $hdfs->dfs( du => qw( -h -s ) => "/tmp" );
( run in 2.267 seconds using v1.01-cache-2.11-cpan-8f98c5d2c55 )