Home | About | Sematext search-lucene.com search-hadoop.com
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB
 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
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
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB