Map type used as return type in UDFs not recognized at all times
----------------------------------------------------------------

                 Key: PIG-851
                 URL: https://issues.apache.org/jira/browse/PIG-851
             Project: Pig
          Issue Type: Bug
          Components: impl
    Affects Versions: 0.3.0
            Reporter: Santhosh Srinivasan
             Fix For: 0.3.0


When an UDF returns a map and the outputSchema method is not overridden, Pig 
does not figure out the data type. As a result, the type is set to unknown 
resulting in run time failure. An example script and UDF follow

{code}
public class mapUDF extends EvalFunc<Map<Object, Object>> {

    @Override
    public Map<Object, Object> exec(Tuple input) throws IOException {
            return new HashMap<Object, Object>();
    }

//Note that the outputSchema method is commented out

/*
    @Override
    public Schema outputSchema(Schema input) {
        try {
            return new Schema(new Schema.FieldSchema(null, null, DataType.MAP));
        } catch (FrontendException e) {
            return null;
        }
    }
*/
{code}

{code}
grunt> a = load 'student_tab.data';           
grunt> b = foreach a generate EXPLODE(1);
grunt> describe b;

b: {Unknown}

grunt> dump b;

2009-06-15 17:59:01,776 [main] INFO  
org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher 
- Failed!

2009-06-15 17:59:01,781 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 
2080: Foreach currently does not handle type Unknown

{code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to