[ https://issues.apache.org/jira/browse/PIG-3049?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13582558#comment-13582558 ]
Johnny Zhang commented on PIG-3049: ----------------------------------- please script works for me to sort a bag in nested foreach {noformat} a = load 'words_and_numbers' as (word:chararray, number:int); b = foreach (group a by number) { ord = order a by word; generate group, ord.word; } dump b; {noformat} I use another data to verify it {noformat} hey 1 hey 2 you 3 you 4 I 5 could 6 1new 6 3new 6 0new 6 2new 6 {noformat} and I got output (word got sorted) {noformat} (1,{(hey)}) (2,{(hey)}) (3,{(you)}) (4,{(you)}) (5,{(I)}) (6,{(0new),(1new),(2new),(3new),(could)}) {noformat} my guess is in original script 'a_bag = a.word;', 'a.word' doesn't return a bag contains all words as tuple. I think 'a.word' returns a String object, or tuple of String. That's properly why the error says "java.lang.String cannot be cast to org.apache.pig.data.Tuple" thoughts? > Cannot sort on a bag in nested foreach > -------------------------------------- > > Key: PIG-3049 > URL: https://issues.apache.org/jira/browse/PIG-3049 > Project: Pig > Issue Type: Bug > Affects Versions: 0.11, 0.12 > Reporter: Jonathan Coveney > Assignee: Johnny Zhang > Fix For: 0.12 > > > The following script fails. > {code} > a = load 'words_and_numbers' as (word:chararray, number:int); > b = foreach (group a by number) { > a_bag = a.word; > ord = order a_bag by word; > generate group, ord; > } > dump b; > {code} > On this data: > {code} > $ cat words_and_numbers > > hey 1 > hey 2 > you 3 > you 4 > I 5 > could 6 > {code} > it throws the following error: > {code} > ava.lang.ClassCastException: java.lang.String cannot be cast to > org.apache.pig.data.Tuple > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POProject.getNext(POProject.java:469) > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator.processInput(PhysicalOperator.java:308) > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POProject.getNext(POProject.java:160) > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POProject.getNext(POProject.java:384) > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator.getNext(PhysicalOperator.java:340) > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POLocalRearrange.getNext(POLocalRearrange.java:333) > at > org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigGenericMapBase.runPipeline(PigGenericMapBase.java:283) > at > org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigGenericMapBase.map(PigGenericMapBase.java:278) > at > org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigGenericMapBase.map(PigGenericMapBase.java:64) > at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144) > at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:647) > at org.apache.hadoop.mapred.MapTask.run(MapTask.java:323) > at > org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:210) > {code} > Is this a supported feature of Pig? Seems reasonable, just seems like > something weird is going on. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira