There are also undocumented "constructor" functions named map, struct, and 
array.  These instantiate complex types directly:


hive> describe function map;
OK
map(key0, value0, key1, value1...) - Creates a map with the given key/value 
pairs
hive> describe function struct;
OK
struct(col1, col2, col3, ...) - Creates a struct with the given field values
Time taken: 0.072 seconds
hive> describe function array;
OK
array(n0, n1...) - Creates an array with the given elements
Time taken: 0.071 seconds

I'll add them to the wiki.

JVS

On Sep 24, 2010, at 10:10 AM, Ning Zhang wrote:

Ping, you cannot insert complex type column by manually input the data. You'll 
need to have the complex typed data stored in some file first (e.g., using 
Thrift serialization or Protocol Buffers), and then load into the table.

Another option you have is to use JSON/XML to represent map. Hive has UDF/UDTF 
to support extracting data from JSON/XML (json_object, json_tuple, 
xpath_string, xpath_int ...). hive> show functions; and hive> desc <func_name> 
will give you more info about these UDFs.

On Sep 23, 2010, at 5:12 PM, Ping Zhu wrote:

Hi,

  Can we insert data into a column of complex type (eg map type) through hive 
command line? The only related article I can find is at 
http://www.mail-archive.com/common-comm...@hadoop.apache.org/msg01031.html: 
"The tables with columns that are an instance of a complex type can only be 
created programmatically and NOT through hive command line at this time'''. We 
will be adding ability to add such tables through the hive command line in the 
future. "

  Any new progress on this feature?

  Thanks for your information and help.

  Ping


Reply via email to