Have you tried flattening the bag first?
On Fri, Jun 21, 2013 at 5:43 AM, Suresh Saggar <[email protected]> wrote: > Facing a similar challenge. Here X contains one column named 'metadata' of > type bytearray. But the actual content is a JSON i.e. the value of metadata > field is a JSON (keys as sId & cId) as shown below: > > grunt> describe X > X: {metadata: bytearray} > > grunt> dump X > ({"sId":"003_w","cId":"k"}) > ({"sId":"001_rf","cId":"r"}) > ({"sId":"001_rf","cId":"r"}) > ({"sId":"004_rf","cId":"r"}) > > Any idea how can I generate cId & sId as separate chararray columns? TIA > > Ss > > On Tue, Jun 18, 2013 at 5:52 AM, Pradeep Gollakota <[email protected] > >wrote: > > > What's the error you are seeing? What does you bag of maps look like? > What > > exactly is a userId? Is it a field or is it a key in the map? > > > > > > On Mon, Jun 17, 2013 at 8:18 PM, Jerry Lam <[email protected]> wrote: > > > > > Hi Pig users, > > > > > > anyone has experience in dereferencing a bag of maps? For instance (in > > the > > > example below), doc in the B contains maps of userId and time. I want > to > > > keep only userId in C. Pig throws an exception on C. Any help is > > > appreciated. > > > > > > A = LOAD 'data' AS doc:bytearray; > > > > > > B = FOREACH A GENERATE (bag{})doc; > > > > > > -- C = FOREACH B GENERATE doc.userId; // this doesn't work. > > > > > > Best Regards, > > > > > > Jerry > > > > > >
