You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-dev@hadoop.apache.org by "Amareshwari Sriramadasu (JIRA)" <ji...@apache.org> on 2008/05/06 07:07:55 UTC

[jira] Commented: (HADOOP-3221) Need a "LineBasedTextInputFormat"

    [ https://issues.apache.org/jira/browse/HADOOP-3221?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12594465#action_12594465 ] 

Amareshwari Sriramadasu commented on HADOOP-3221:
-------------------------------------------------


Here is design for the proposed LineBasedTextInputFormat:

We can have an NLineInputFormat that splits the input file such that N lines are made as one split, where N defaults to 1. N can be derived from number of maps as total_number_of_lines/number_of_maps.

bq. The location hints for the splits should not be derived from the input file, but rather, should span the whole mapred cluster.
I think this can be done by returning an empty array for InputSplit.getLocations(). 

And for making the split contain the actual lines themselves instead of <filename, start-offset, length>, InputSplit.write and read methods can be overridden to do this. And a RecordReader should be implemented to read the contents of the split.

Thoughts?


> Need a "LineBasedTextInputFormat"
> ---------------------------------
>
>                 Key: HADOOP-3221
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3221
>             Project: Hadoop Core
>          Issue Type: New Feature
>          Components: mapred
>    Affects Versions: 0.16.2
>         Environment: All
>            Reporter: Milind Bhandarkar
>
> In many "pleasantly" parallel applications, each process/mapper processes the same input file (s), but with computations are controlled by different parameters.
> (Referred to as "parameter sweeps").
> One way to achieve this, is to specify a set of parameters (one set per line) as input in a control file (which is the input path to the map-reduce application, where as the input dataset is specified via a config variable in JobConf.).
> It would be great to have an InputFormat, that splits the input file such that by default, one line is fed as a value to one map task, and key could be line number. i.e. (k,v) is (LongWritable, Text).
> If user specifies the number of maps explicitly, each mapper should get a contiguous chunk of lines (so as to load balance between the mappers.)
> The location hints for the splits should not be derived from the input file, but rather, should span the whole mapred cluster.
> (Is there a way to do this without having to return an array of nSplits*nTaskTrackers ?)
> Increasing the replication of the "real" input dataset (since it will be fetched by all the nodes) is orthogonal, and one can use DistributedCache for that.
> (P.S. Please chose a better name for this InputFormat. I am not in love with  "LineBasedText" name.)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.