Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]
Created on 04-07-2015 01:27 AM - edited 09-16-2022 02:26 AM
I have a simple JSON dataset as below. How do I query all parts.lock
JSON:
{ "id": 1, "name": "A green door", "price": 12.50, "tags": ["home", "green"], "parts" : [ { "lock" : "One lock", "key" : "single key" }, { "lock" : "2 lock", "key" : "2 key" } ] }
Query:
select id,name,price,parts.lock from product
The point is if I use parts[0].lock it will return one row as below:
{u'price': 12.5, u'id': 1, u'.lock': {u'lock': u'One lock', u'key': u'single key'}, u'name': u'A green door'}
But I want to return all the locks in the parts structure.
Please help me with this, thanks !
Created 04-08-2015 04:39 PM
Created 04-08-2015 04:39 PM
Created 04-15-2015 02:54 AM
Thanks for your reply chrisf,
I've been trying to use LATERAL VIEW explode for week but still can't figure how to use it, can you give me an example from my first post.
I also try json-serde in HiveContext, i can parse table, but can't querry although the querry work fine in Hive.
EX:
+ In both Hive anh HiveContext, i can parse table:
CREATE EXTERNAL TABLE data( parts array<struct<locks:STRING, key:STRING>> ) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' LOCATION '/user/hue/...';
+ Then in Hive, i can use this:
SELECT parts.locks FROM data;
but it will return error in HiveContext.
Looking forward for reply, thanks !
Created 04-15-2015 09:58 PM
Oh, I finally do it, follow is my hql:
SELECT id, part.lock, part.key FROM mytable EXTERNAL VIEW explode(parts) parttable AS part;
many thanks chrisf !