Home | About | Sematext search-lucene.com search-hadoop.com
 Search Hadoop and all its subprojects:

Switch to Threaded View
Hive, mail # user - Map<string, Map<string, string>> for TEXTFILE


Copy link to this message
-
RE: Map<string, Map<string, string>> for TEXTFILE
Steven Wong 2010-09-10, 18:27
I think you have to use \004 and \005 as delimiters for your inner maps.
-----Original Message-----
From: Sammy Yu [mailto:[EMAIL PROTECTED]]
Sent: Friday, September 10, 2010 11:13 AM
To: [EMAIL PROTECTED]
Subject: Map<string, Map<string, string>> for TEXTFILE

Hi guys,
   I'm trying to create a textfile for a table with a Map<string,
Map<string, string>> column:

CREATE EXTERNAL TABLE map_test
(id int,
m MAP<string, MAP<string, string>>)
row format delimited fields terminated by '\001'
  escaped by '\004'
  collection items terminated by '\002'
  map keys terminated by '\003;
location '/user/hadoop/map_test';

I can't seem to figure out how to construct the serialized textfile
form for the value of the inner map.  I've create a file with the
following content:
100<\001>physical<\003>height<\003>60<\002>weight<\003>120.5<\003>inner<\003>outgoing<\003>5.2
to represent id=100, m={"physical":{"height":"60",
"weight":"120.5"},"inner":{"outgoing:"5.2"}}

however when I do a query I get:
hive> select * from map_test;
100     {"physical":{"height\u000360":null},"weight":{"120.5":null},"inner":{"outgoing\u00035.2":null}}

I think I'm suppose to escape the value of the outer map's key.  Any
help would be greatly appreciated!

Thanks,
Sammy