Arguably, that's a Hive bug. What does hive do if you *want* to have a \n as
a value?

For your case, I think it's as simple as foreach rel generate ( foo is null
OR foo == '\n' ? 'U' : foo);

-D

On Mon, May 17, 2010 at 11:42 AM, Syed Wasti <mdwa...@hotmail.com> wrote:

> Well Dmitriy, my bad, I was looking at the data through a hive query and it
> shows as NULL, but when I looked into the flat file all the NULL values are
> are seen as \N.
> Hive is able to understand \N as NULL but pig is not... How can I resolve
> this ?
>
> On 5/16/10 4:33 PM, "Dmitriy Ryaboy" <dvrya...@gmail.com> wrote:
>
> > In that case, maybe it's the data, and what you think is null is actually
> > '\n' ?
> >
> > -D
> >
> > On Sun, May 16, 2010 at 4:07 PM, Syed Wasti <mdwa...@hotmail.com> wrote:
> >
> >> Doing absolutely the same thing and I am using pig 6 too.
> >> Tried with the fake data on both local and mapreduce modes, works fine.
> >> But on my script against actual data in mapreduce mode, it fails to do
> the
> >> same thing, places \N instead of U.
> >>
> >> grunt> rel1 = LOAD '/user/swasti/data' USING PigStorage('\t') as (num);
> >> grunt> dump rel1;
> >> (1)
> >> (2)
> >> (3)
> >> ()
> >> (5)
> >> grunt> find_null = FOREACH rel1 GENERATE (num is null?'U':num);
> >> grunt> dump find_null;
> >> (1)
> >> (2)
> >> (3)
> >> (U)
> >> (5)
> >>
> >>
> >> On 5/16/10 2:23 PM, "Dmitriy Ryaboy" <dvrya...@gmail.com> wrote:
> >>
> >>> So what I am saying is, check that you are not inserting some weird
> >>> non-ascii quotes in your actual script.
> >>> I just ran this on Pig 6, it worked:
> >>>
> >>> grunt> data = load 'tmp/nulltest' using PigStorage() as (num);
> >>> grunt> dump data;
> >>> (1)
> >>> (2)
> >>> ()
> >>> (3)
> >>> grunt> find_nulls = foreach data generate ( num is null ? 'U' : num );
> >>> grunt> dump find_nulls;
> >>> (1)
> >>> (2)
> >>> (U)
> >>> (3)
> >>>
> >>> I double-checked just in case, and it works in both local and mapreduce
> >>> modes.
> >>>
> >>> -Dmitriy
> >>>
> >>> On Sun, May 16, 2010 at 1:49 PM, Syed Wasti <mdwa...@hotmail.com>
> wrote:
> >>>
> >>>> Hmm not sure why, I used quotes in this mail, let me rewrite,
> >>>> SQL(U is within single quotes): NVL(city,U) city
> >>>> Pig(U is within single quotes): (city is null?U:city) AS city
> >>>>
> >>>>
> >>>>
> >>>> On 5/16/10 1:36 PM, "Dmitriy Ryaboy" <dvrya...@gmail.com> wrote:
> >>>>
> >>>>> Syed,
> >>>>> The samples you pasted include all kinds of extraneous characters.
> Are
> >>>> you
> >>>>> sure your script is properly encoded?
> >>>>>
> >>>>>
> >>>>> On Sun, May 16, 2010 at 1:16 PM, Syed Wasti <mdwa...@hotmail.com>
> >> wrote:
> >>>>>
> >>>>>> I am trying the SQL ³NVL(city, ŒU¹) city² in pig I am using the
> >> bincond
> >>>>>> operator, ³(city is null?'U': city) AS city², which is of chararray
> >>>> type,
> >>>>>> the result file shows Œ\N¹ instead of U.  Any ideas ?
> >>>>>>
> >>>>
> >>>>
> >>>>
> >>
> >>
> >>
>
>
>

Reply via email to