Many thanks to all.

The following command returned records like:
hive>select  map_keys(myfield) from mytable;
["some_key1","some_key2","some_key3"]
["some_key1","some_key2","some_key3"]

hive>select explode(arr) as arr from (select  map_keys(myfield) from mytable );

hive>select explode(arr) as arr (select  map_keys(myfield) from mytable ) ;

Both the above queries give syntax error.

Is there a sample UDF program that could parse a MAP field in hive?



________________________________
 From: Stephen Sprague <[email protected]>
To: [email protected] 
Sent: Thursday, July 25, 2013 2:01 PM
Subject: Re: Parse MAP viarable Keys in HIVE
 


that sure looks like a nice candidate for a UDF, eh?  Come to think of it i'm 
surprised there isn't a jar file out there in openSource land that contains 
higher order functions already. 




On Thu, Jul 25, 2013 at 11:20 AM, Arafat, Moiz <[email protected]> wrote:

Try this:
>
>
>select 
>distinct arr   --- Distinct Values  
>from 
>(
>select 
>explode(arr) as arr     -- Breaks Array in every column, as separate row . 
>(
>select 
>map_keys(KV) as arr         -- Returns an array of the Key Names for every row 
>. 
>from 
><table Name> 
>)a
>) c 
>order by arr;
>
>
>Thanks,
>Moiz
>
>
>
>On Jul 25, 2013, at 2:08 PM, R J <[email protected]> wrote:
>
>Hi All,
>>
>>
>>I have a table in Apache Hive and I am interested in a specific field of the 
>>table. Table name: Table1 and field name f1. The field f1 is of type 
>>MAP<string, string>.
>>
>>The table is huge. How could I find the distinct key values of the MAP 
>>variable f1 above?
>>
>>I tried:
>>$hive -e "select distinct map_keys(f1) from Table1;"
>>$hive -e "select k from Table1 LATERAL VIEW explode(f1) et as k,v;"
>>
>>Each of the above returned syntax error. Could you please help.
>>
>>If the existing values for a few fields of the table ate:
>><x, y>
>><x, p>
>><m, n>
>><empty>
>><m, m>
>><p, q>
>>
>>I want the return to be:
>>x
>>m
>>p
>>
>>Thanks a lot. 
>>
>>
>>
>>
>>
>

Reply via email to