hadoop-common-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tom White (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HADOOP-372) should allow to specify different inputformat classes for different input dirs for Map/Reduce jobs
Date Mon, 10 Mar 2008 17:42:46 GMT

     [ https://issues.apache.org/jira/browse/HADOOP-372?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Tom White updated HADOOP-372:

    Attachment: hadoop-372.patch

Here's a first cut at providing this feature. Note that it doesn't require any framework changes
- it's all in the library classes, as Owen pointed out above.

For a concrete example, consider:

ExtendedJobConf conf = new ExtendedJobConf(MultiInputFormat.class);

conf.setOutputPath(new Path("output"));

conf.addInputPath(new Path("input/multiinput/1"),
conf.addInputPath(new Path("input/multiinput/2"),

It's also possible to specialize the mappers by input path:

ExtendedJobConf conf = new ExtendedJobConf(MultiInputFormatWithMapper.class);

conf.setOutputPath(new Path("output"));

conf.addInputPath(new Path("input/multiinput/1"),
        TextInputFormat.class, IdentityMapper.class);
conf.addInputPath(new Path("input/multiinput/3"),
        KeyValueTextInputFormat.class, ValueMapper.class);

Note that this patch uses ExtendedJobConf - are the new addInputPath methods useful enough
to be added to JobConf?

> should allow to specify different inputformat classes for different input dirs for Map/Reduce
> --------------------------------------------------------------------------------------------------
>                 Key: HADOOP-372
>                 URL: https://issues.apache.org/jira/browse/HADOOP-372
>             Project: Hadoop Core
>          Issue Type: New Feature
>          Components: mapred
>    Affects Versions: 0.4.0
>         Environment: all
>            Reporter: Runping Qi
>            Assignee: Owen O'Malley
>         Attachments: hadoop-372.patch
> Right now, the user can specify multiple input directories for a map reduce job. 
> However, the files under all the directories are assumed to be in the same format, 
> with the same key/value classes. This proves to be  a serious limit in many situations.

> Here is an example. Suppose I have three simple tables: 
> one has URLs and their rank values (page ranks), 
> another has URLs and their classification values, 
> and the third one has the URL meta data such as crawl status, last crawl time, etc. 
> Suppose now I need a job to generate a list of URLs to be crawled next. 
> The decision depends on the info in all the three tables.
> Right now, there is no easy way to accomplish this.
> However, this job can be done if the framework allows to specify different inputformats
for different input dirs.
> Suppose my three tables are in the following directory respectively: rankTable, classificationTable.
and metaDataTable. 
> If we extend JobConf class with the following method (as Owen suggested to me):
>     addInputPath(aPath, anInputFormatClass, anInputKeyClass, anInputValueClass)
> Then I can specify my job as follows:
>     addInputPath(rankTable, SequenceFileInputFormat.class, UTF8.class, DoubleWritable.class)
>     addInputPath(classificationTable, TextInputFormat.class, UTF8,class, UTF8.class)
>     addInputPath(metaDataTable, SequenceFileInputFormat.class, UTF8.class, MyRecord.class)
> If an input directory is added through the current API, it will have the same meaning
as it is now. 
> Thus this extension will not affect any applications that do not need this new feature.
> It is relatively easy for the M/R framework to create an appropriate record reader for
a map task based on the above information.
> And that is the only change needed for supporting this extension.

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

View raw message