[ https://issues.apache.org/jira/browse/PIG-4883?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
liyunzhang_intel updated PIG-4883: ---------------------------------- Attachment: PIG-4883.patch in PIG-4883.patch: 1. add an attribute "mapKeyTypeForSplitter" for MapReduceOperator to record the map key type of all splittees if have. 2.modify MultiQueryOptimizer#hasSameMapKeyType. If the splittees of the splitter are splitter before(like the case i mention in the patch), we just compare the mapKeyTypeForSplitter of all the splittees. If all the elements in the mapKeyTypeForSplitter are same, then return true for function "hasSameMapKeyType". > java.lang.ClassCastException: org.apache.pig.data.BinSedesTuple cannot be > cast to java.lang.Long > ------------------------------------------------------------------------------------------------- > > Key: PIG-4883 > URL: https://issues.apache.org/jira/browse/PIG-4883 > Project: Pig > Issue Type: Bug > Affects Versions: 0.15.0 > Reporter: swlai > Assignee: liyunzhang_intel > Attachments: PIG-4883.patch > > > The following code and data will raise an exception. > However, if I remove any of the four "store"s, the code will be fine. > {code:title=test.pig|borderStyle=solid} > r = load 'test.txt' as (id: chararray, val: long); > t1 = filter r by val >= 12 and val < 20; > grpd = group t1 by val; > t1_cnt = foreach grpd generate group as name, COUNT(t1) as value; > t1_cnt = foreach t1_cnt generate (chararray)name, value; > grpd = group t1 all; > t1_cnt_total = foreach grpd generate 't1' as name, COUNT(t1) as value; > t2 = filter r by val >= 20 and val < 30; > grpd = group t2 by val; > t2_cnt = foreach grpd generate group as name, COUNT(t2) as value; > --t2_cnt = foreach t2_cnt generate (chararray)name, value; > grpd = group t2 all; > t2_cnt_total = foreach grpd generate 't2' as name, COUNT(t2) as value; > store t1_cnt into 'outx/3'; > store t2_cnt into 'outx/4'; > store t1_cnt_total into 'outx/5'; > store t2_cnt_total into 'outx/6'; > {code} > and > {code:title=test.txt|borderStyle=solid} > c 12 > {code} > will cause error: > Caused by: java.lang.ClassCastException: org.apache.pig.data.BinSedesTuple > cannot be cast to java.lang.Long > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POCast.getNextString(POCast.java:1167) > at > org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator.getNext(PhysicalOperator.java:343) > ... 14 more > I don't know why the code need to cast a BinSedesTuple to Long. -- This message was sent by Atlassian JIRA (v6.3.4#6332)