[ https://issues.apache.org/jira/browse/PIG-2021?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13031114#comment-13031114 ]
Vivek Padmanabhan commented on PIG-2021: ---------------------------------------- Hi Xuefu, Extremely sorry about that.I was just trying to remove the dependencies.Please check whether the below is a valid case; {code} register mymapudf.jar; A = load 'temp' as ( s, m, l ); B = foreach A generate *, org.vivek.udfs.mToMapUDF((chararray) s) as mapout; C = foreach B { urlpath = (chararray) mapout#'k1'; lc_urlpath = org.vivek.udfs.LOWER((chararray) urlpath); generate urlpath,lc_urlpath; }; {code} Source for org.vivek.udfs.mToMapUDF {code} package org.vivek.udfs; import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.apache.pig.EvalFunc; import org.apache.pig.data.DataType; import org.apache.pig.data.Tuple; import org.apache.pig.impl.logicalLayer.schema.Schema; public class mToMapUDF extends EvalFunc<Map> { public Map<String, Object> exec(Tuple arg0) throws IOException { Map <String,Object> myMapTResult = new HashMap<String, Object>(); myMapTResult.put("k1", "SomeString"); myMapTResult.put("k3", "SomeOtherString"); return myMapTResult; } public Schema outputSchema(Schema input) { return new Schema(new Schema.FieldSchema("mapout",DataType.MAP)); } } {code} Source for org.vivek.udfs.LOWER {code} package org.vivek.udfs; import java.io.IOException; import java.util.List; import java.util.ArrayList; import org.apache.pig.EvalFunc; import org.apache.pig.data.Tuple; import org.apache.pig.data.DataType; import org.apache.pig.impl.logicalLayer.schema.Schema; import org.apache.pig.impl.logicalLayer.FrontendException; import org.apache.pig.FuncSpec; public class LOWER extends EvalFunc<String> { public String exec(Tuple input) throws IOException { if (input == null || input.size() == 0) return null; try { String str = (String)input.get(0); return str.toLowerCase(); } catch(Exception e){ return null; } } public Schema outputSchema(Schema input) { return new Schema(new Schema.FieldSchema(getSchemaName(this.getClass().getName().toLowerCase(), input), DataType.CHARARRAY)); } public List<FuncSpec> getArgToFuncMapping() throws FrontendException { List<FuncSpec> funcList = new ArrayList<FuncSpec>(); funcList.add(new FuncSpec(this.getClass().getName(), new Schema(new Schema.FieldSchema(null, DataType.CHARARRAY)))); return funcList; } } {code} > Parser error while referring a map nested foreach > ------------------------------------------------- > > Key: PIG-2021 > URL: https://issues.apache.org/jira/browse/PIG-2021 > Project: Pig > Issue Type: Bug > Affects Versions: 0.9.0 > Reporter: Vivek Padmanabhan > Assignee: Xuefu Zhang > Fix For: 0.9.0 > > > The below script is throwing parser errors > {code} > register string.jar; > A = load 'test1' using MapLoader() as ( s, m, l ); > B = foreach A generate *, string.URLPARSE((chararray) s#'url') as parsedurl; > C = foreach B { > urlpath = (chararray) parsedurl#'path'; > lc_urlpath = string.TOLOWERCASE((chararray) urlpath); > generate *; > }; > {code} > Error message; > | Failed to generate logical plan. > |Nested exception: org.apache.pig.impl.logicalLayer.FrontendException: ERROR > 2225: Projection with nothing to reference! > PIG-2002 reports a similar issue, but when i tried with the patch of PIG-2002 > i was getting the below exception; > ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: <file repro.pig, line > 11, column 33> mismatched input '(' expecting SEMI_COLON -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira