[
https://issues.apache.org/jira/browse/PIG-1612?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12909418#action_12909418
]
Thejas M Nair commented on PIG-1612:
------------------------------------
For example, in this exception stack trace -
{code}
Caused by: org.apache.pig.impl.logicalLayer.parser.ParseException: Error
merging schemas for union operator : Error merging schema: ({i: int,j: long})
with merged schema: ({l1::i: int,l1::j: long,l2::i: int,l2::j: long}) of
schemas : [{l1::i: int,l1::j: long,l2::i: int,
l2::j: long}]
at
org.apache.pig.impl.logicalLayer.parser.QueryParser.UnionClause(QueryParser.java:3409)
at
org.apache.pig.impl.logicalLayer.parser.QueryParser.BaseExpr(QueryParser.java:1457)
at
org.apache.pig.impl.logicalLayer.parser.QueryParser.Expr(QueryParser.java:1010)
at
org.apache.pig.impl.logicalLayer.parser.QueryParser.Parse(QueryParser.java:797)
at
org.apache.pig.impl.logicalLayer.LogicalPlanBuilder.parse(LogicalPlanBuilder.java:63)
at org.apache.pig.PigServer$Graph.parseQuery(PigServer.java:1593)
... 13 more
Caused by: org.apache.pig.impl.logicalLayer.schema.SchemaMergeException: ERROR
0: Error merging schema: ({i: int,j: long}) with merged schema: ({l1::i:
int,l1::j: long,l2::i: int,l2::j: long}) of schemas : [{l1::i: int,l1::j:
long,l2::i: int,l2::j: long}]
at
org.apache.pig.impl.logicalLayer.schema.Schema.mergeSchemasByAlias(Schema.java:1652)
at
org.apache.pig.impl.logicalLayer.parser.QueryParser.UnionClause(QueryParser.java:3405)
... 18 more
Caused by: org.apache.pig.impl.logicalLayer.schema.SchemaMergeException: ERROR
0: Caught exception finding FieldSchema for aliasi
at
org.apache.pig.impl.logicalLayer.schema.Schema.getFieldSubNameMatchThrowSchemaMergeException(Schema.java:1787)
at
org.apache.pig.impl.logicalLayer.schema.Schema.mergeSchemaByAlias(Schema.java:1686)
at
org.apache.pig.impl.logicalLayer.schema.Schema.mergeSchemasByAlias(Schema.java:1646)
... 19 more
Caused by: org.apache.pig.impl.logicalLayer.FrontendException: ERROR 1025:
Found more than one match: l1::i, l2::i
at
org.apache.pig.impl.logicalLayer.schema.Schema.getField(Schema.java:819)
at
org.apache.pig.impl.logicalLayer.schema.Schema.getFieldSubNameMatch(Schema.java:836)
at
org.apache.pig.impl.logicalLayer.schema.Schema.getFieldSubNameMatchThrowSchemaMergeException(Schema.java:1783)
... 21 more
{code}
The pig statement that results in this error is a union command -
u = union onschema f, l3;
The error message that is printed only says - 'Found more than one match:
l1::i, l2::i' . It would be more useful for the user if we are able to say
something on lines of -
"Error merging schema: ({i: int,j: long}) with merged schema: ({l1::i:
int,l1::j: long,l2::i: int,l2::j: long}) of schemas : [{l1::i: int,l1::j:
long,l2::i: int,l2::j: long}]. Found more than one match: l1::i, l2::i"
(assuming this was the message generated exception from Schema.java:1652)
> error reporting: PigException needs to have a way to indicate that its
> message is appropriate for user
> ------------------------------------------------------------------------------------------------------
>
> Key: PIG-1612
> URL: https://issues.apache.org/jira/browse/PIG-1612
> Project: Pig
> Issue Type: Improvement
> Reporter: Thejas M Nair
> Fix For: 0.9.0
>
>
> The error message printed to the user by pig is the message from the
> exception that is the 'root cause' from the chain of getCause() of exception
> that has been thrown. But often the 'root cause' exception does not have
> enough context that would make for a better error message. It should be
> possible for a PigException to indicate to the code that determines the error
> message that its getMessage() string should be used instead of that of the
> 'cause' exception.
> The following code in LogUtils.java is used to determine the exception that
> is the 'root cause' -
> {code}
> public static PigException getPigException(Throwable top) {
> Throwable current = top;
> Throwable pigException = top;
> while (current != null && current.getCause() != null){
> current = current.getCause();
> if((current instanceof PigException) &&
> (((PigException)current).getErrorCode() != 0)) {
> pigException = current;
> }
> }
> return (pigException instanceof PigException?
> (PigException)pigException : null);
>
> }
> {code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.