Regarding your original question, you can use the min and max split settings to 
control the number of maps: 
http://hadoop.apache.org/docs/stable/api/org/apache/hadoop/mapreduce/lib/input/FileInputFormat.html
 . See #setMinInputSplitSize and #setMaxInputSplitSize. Or use 
mapred.min.split.size directly.

W.r.t your custom inputformat, are you sure you job is using this InputFormat 
and not the default one?

HTH,
+Vinod Kumar Vavilapalli
Hortonworks Inc.
http://hortonworks.com/

On Jan 28, 2013, at 12:56 PM, Marcelo Elias Del Valle wrote:

> Just to complement the last question, I have implemented the getSplits method 
> in my input format:
> https://github.com/mvallebr/CSVInputFormat/blob/master/src/main/java/org/apache/hadoop/mapreduce/lib/input/CSVNLineInputFormat.java
> 
> However, it still doesn't create more than 2 map tasks. Is there something I 
> could do about it to assure more map tasks are created?
> 
> Thanks
> Marcelo.
> 
> 
> 2013/1/28 Marcelo Elias Del Valle <mvall...@gmail.com>
> Sorry for asking too many questions, but the answers are really happening.
> 
> 
> 2013/1/28 Harsh J <ha...@cloudera.com>
> This seems CPU-oriented. You probably want the NLineInputFormat? See
> http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/lib/NLineInputFormat.html.
> This should let you spawn more maps as we, based on your N factor.
> 
> Indeed, CPU is my bottleneck. That's why I want more things in parallel.
> Actually, I wrote my own InputFormat, to be able to process multiline CSVs: 
> https://github.com/mvallebr/CSVInputFormat
> I could change it to read several lines at a time, but would this alone allow 
> more tasks running in parallel?
>  
> Not really - "Slots" are capacities, rather than split factors
> themselves. You can have N slots always available, but your job has to
> supply as many map tasks (based on its input/needs/etc.) to use them
> up.
> 
> But how can I do that (supply map tasks) in my job? changing its code? hadoop 
> config?
>  
> Unless your job sets the number of reducers to 0 manually, 1 default
> reducer is always run that waits to see if it has any outputs from
> maps. If it does not receive any outputs after maps have all
> completed, it dies out with behavior equivalent to a NOP.
> Ok, I did job.setNumReduceTasks(0); , guess this will solve this part, thanks!
> 
> 
> -- 
> Marcelo Elias Del Valle
> http://mvalle.com - @mvallebr
> 
> 
> 
> -- 
> Marcelo Elias Del Valle
> http://mvalle.com - @mvallebr

Reply via email to