[
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