Hi Ayon,
Were you able to solve this issue? I am facing the same problem. The last
reducer of my query has been running for more than 2 hours now.

Thanks
Mohit

On Fri, Nov 18, 2011 at 9:33 AM, Mark Grover <mgro...@oanda.com> wrote:

> Rohan,
> I took a look at the source code and wanted to share a couple of things:
> 1) Make sure the following 2 properties are being set to true (they are
> false by default):
> hive.optimize.skewjoin
> hive.auto.convert.join
>
> 2) The Hive source code that is causing the exception is:
>        String path = entry.getKey();
>        Path dirPath = new Path(path);
>        FileSystem inpFs = dirPath.getFileSystem(conf);
>        FileStatus[] fstatus = inpFs.listStatus(dirPath);
>        if (fstatus.length > 0) {
>
> It's the last line that throws the exception. Looking at the above code
> and Hadoop source code (in particular, FileSystem.java, Path.java and
> PathFilter.java all under org.apache.hadoop.fs.*), it seems like the
> filestatus for the directory path being provided to the job is not
> well-liked. That could happen because the expected directory path is a
> file(?), the directory does not exist or is empty. So, when the job fails
> see if the path under consideration exists or not.
>
> I don't know if it's a bug in the code. If so, perhaps, we should be
> checking for both fstats != null and fstatus.length > 0. If you are
> zealous, you can try making that change and recompiling your Hive or
> alternatively, implementing your own ConditionalResolverSkewJoin1 (which
> has the same implementation as ConditionalResolverSkewJoin but with this
> extra check). Then plug this new class in.
>
> Sorry for the long-winded answer,
> Mark
>
> ----- Original Message -----
> From: "rohan monga" <monga.ro...@gmail.com>
> To: user@hive.apache.org
> Cc: "Ayon Sinha" <ayonsi...@yahoo.com>
> Sent: Thursday, November 17, 2011 5:23:24 PM
> Subject: Re: Severely hit by "curse of last reducer"
>
> Hi Mark,
> Apologies for the thin details on the query :)
> Here is the error log http://pastebin.com/pqxh4d1u the job tracker
> doesn't show any errors.
> I am using hive-0.7, I did set a threshold for the query and sadly i
> couldn't find any more documentation on skewjoins other than the wiki.
>
> Thanks,
> --
> Rohan Monga
>
>
>
> On Thu, Nov 17, 2011 at 2:02 PM, Mark Grover <mgro...@oanda.com> wrote:
> > Rohan,
> > The short answer is: I don't know:-) If you could paste the log, I or
> someone else of the mailing list could be able to help.
> >
> > BTW, What version of Hive were you using? Did you set the threshold
> before running the query? Try to find some documentation online if can tell
> what all properties need to be set before Skew Join. My understanding was
> that the 2 properties I mentioned below should suffice.
> >
> > Mark
> >
> > ----- Original Message -----
> > From: "rohan monga" <monga.ro...@gmail.com>
> > To: user@hive.apache.org
> > Cc: "Ayon Sinha" <ayonsi...@yahoo.com>
> > Sent: Thursday, November 17, 2011 4:44:17 PM
> > Subject: Re: Severely hit by "curse of last reducer"
> >
> > Hi Mark,
> > I have tried setting hive.optimize.skewjoin=true, but it get a
> > NullPointerException after the first stage of the query completes.
> > Why does that happen?
> >
> > Thanks,
> > --
> > Rohan Monga
> >
> >
> >
> > On Thu, Nov 17, 2011 at 1:37 PM, Mark Grover <mgro...@oanda.com> wrote:
> >> Ayon,
> >> I see. From what you explained, skew join seems like what you want.
> Have you tried that already?
> >>
> >> Details on how skew join works are in this presentation. Jump to 15
> minute mark if you want to just listen about skew joins.
> >> http://www.youtube.com/watch?v=OB4H3Yt5VWM
> >>
> >> I bet you could also find something in the mail list archives related
> to Skew Join.
> >>
> >> In a nutshell (from the video),
> >> set hive.optimize.skewjoin=true
> >> set hive.skewjoin.key=<Threshold>
> >>
> >> should do the trick for you. Threshold, I believe, is the number of
> records you consider a large number to defer till later.
> >>
> >> Good luck!
> >> Mark
> >>
> >> ----- Original Message -----
> >> From: "Ayon Sinha" <ayonsi...@yahoo.com>
> >> To: "Mark Grover" <mgro...@oanda.com>, user@hive.apache.org
> >> Sent: Wednesday, November 16, 2011 10:53:19 PM
> >> Subject: Re: Severely hit by "curse of last reducer"
> >>
> >>
> >>
> >> Only one reducer is always stuck. My table2 is small but using a
> Mapjoin makes my mappers run out of memory. My max reducers is 32 (also max
> reduce capacity). I tried setting num reducers to higher number (even 6000,
> which is appx. combination of dates & names I have) only to have lots of
> reducers with no data.
> >> So I am quite sure its is some key in stage-1 thats is doing this.
> >>
> >> -Ayon
> >> See My Photos on Flickr
> >> Also check out my Blog for answers to commonly asked questions.
> >>
> >>
> >>
> >>
> >> From: Mark Grover <mgro...@oanda.com>
> >> To: user@hive.apache.org; Ayon Sinha <ayonsi...@yahoo.com>
> >> Sent: Wednesday, November 16, 2011 6:54 PM
> >> Subject: Re: Severely hit by "curse of last reducer"
> >>
> >> Hi Ayon,
> >> Is it one particular reduce task that is slow or the entire reduce
> phase? How many reduce tasks did you have, anyways?
> >>
> >> Looking into what the reducer key was might only make sense if a
> particular reduce task was slow.
> >>
> >> If your table2 is small enough to fit in memory, you might want to try
> a map join.
> >> More details at:
> >> http://www.facebook.com/note.php?note_id=470667928919
> >>
> >> Let me know what you find.
> >>
> >> Mark
> >>
> >> ----- Original Message -----
> >> From: "Ayon Sinha" < ayonsi...@yahoo.com >
> >> To: "Hive Mailinglist" < user@hive.apache.org >
> >> Sent: Wednesday, November 16, 2011 9:03:23 PM
> >> Subject: Severely hit by "curse of last reducer"
> >>
> >>
> >>
> >> Hi,
> >> Where do I find the log of what reducer key is causing the last reducer
> to go on for hours? The reducer logs don't say much about the key its
> processing. Is there a way to enable a debug mode where it would log the
> key it's processing?
> >>
> >>
> >> My query looks like:
> >>
> >>
> >> select partner_name, dates, sum(coins_granted) from table1 u join
> table2 p on u.partner_id=p.id group by partner_name, dates
> >>
> >>
> >>
> >> My uncompressed size of table1 is about 30GB.
> >>
> >> -Ayon
> >> See My Photos on Flickr
> >> Also check out my Blog for answers to commonly asked questions.
> >>
> >>
> >>
> >
>

Reply via email to