Uploaded image for project: 'Pig'
  1. Pig
  2. PIG-449

Schemas for bags should contain tuples all the time

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 0.2.0
    • 0.2.0
    • None
    • None

    Description

      The front end treats relations as operators that return bags. When the schema of a load statement is specified, the bag is associated with the schema specified by the user. Ideally, the schema corresponds to the tuple contained in the bag.

      With PIG-380, the schema for bag constants are computed by the front end. The schema for the bag contains the tuple which in turn contains the schema of the columns. This results in errors when columns are accessed directly just like the load statements.

      The front end should then treat access to the columns as a double dereference, i.e., access the tuple inside the bag and then the column inside the tuple.

      grunt> a = load '/user/sms/data/student.data' using PigStorage(' ') as (name, age, gpa);
      grunt> b = foreach a generate {(16, 4.0e-2, 'hello')} as b:{t:(i: int, d: double, c: chararray)};
      
      grunt> describe b;
      b: {b: {t: (i: integer,d: double,c: chararray)}}
      
      grunt> c = foreach b generate b.i;
      111064 [main] ERROR org.apache.pig.tools.grunt.GruntParser  - java.io.IOException: Invalid alias: i in {t: (i: integer,d: double,c: chararray)}
              at org.apache.pig.PigServer.parseQuery(PigServer.java:293)
              at org.apache.pig.PigServer.registerQuery(PigServer.java:258)
              at org.apache.pig.tools.grunt.GruntParser.processPig(GruntParser.java:432)
              at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:242)
              at org.apache.pig.tools.grunt.GruntParser.parseContOnError(GruntParser.java:93)
              at org.apache.pig.tools.grunt.Grunt.run(Grunt.java:58)
              at org.apache.pig.Main.main(Main.java:282)
      Caused by: org.apache.pig.impl.logicalLayer.parser.ParseException: Invalid alias: i in {t: (i: integer,d: double,c: chararray)}
              at org.apache.pig.impl.logicalLayer.parser.QueryParser.AliasFieldOrSpec(QueryParser.java:5851)
              at org.apache.pig.impl.logicalLayer.parser.QueryParser.ColOrSpec(QueryParser.java:5709)
              at org.apache.pig.impl.logicalLayer.parser.QueryParser.BracketedSimpleProj(QueryParser.java:5242)
              at org.apache.pig.impl.logicalLayer.parser.QueryParser.BaseEvalSpec(QueryParser.java:4040)
              at org.apache.pig.impl.logicalLayer.parser.QueryParser.UnaryExpr(QueryParser.java:3909)
              at org.apache.pig.impl.logicalLayer.parser.QueryParser.CastExpr(QueryParser.java:3863)
              at org.apache.pig.impl.logicalLayer.parser.QueryParser.MultiplicativeExpr(QueryParser.java:3772)
              at org.apache.pig.impl.logicalLayer.parser.QueryParser.AdditiveExpr(QueryParser.java:3698)
              at org.apache.pig.impl.logicalLayer.parser.QueryParser.InfixExpr(QueryParser.java:3664)
              at org.apache.pig.impl.logicalLayer.parser.QueryParser.FlattenedGenerateItem(QueryParser.java:3590)
              at org.apache.pig.impl.logicalLayer.parser.QueryParser.FlattenedGenerateItemList(QueryParser.java:3500)
              at org.apache.pig.impl.logicalLayer.parser.QueryParser.GenerateStatement(QueryParser.java:3457)
              at org.apache.pig.impl.logicalLayer.parser.QueryParser.NestedBlock(QueryParser.java:2933)
              at org.apache.pig.impl.logicalLayer.parser.QueryParser.ForEachClause(QueryParser.java:2336)
              at org.apache.pig.impl.logicalLayer.parser.QueryParser.BaseExpr(QueryParser.java:973)
              at org.apache.pig.impl.logicalLayer.parser.QueryParser.Expr(QueryParser.java:748)
              at org.apache.pig.impl.logicalLayer.parser.QueryParser.Parse(QueryParser.java:549)
              at org.apache.pig.impl.logicalLayer.LogicalPlanBuilder.parse(LogicalPlanBuilder.java:60)
              at org.apache.pig.PigServer.parseQuery(PigServer.java:290)
              ... 6 more
      
      111064 [main] ERROR org.apache.pig.tools.grunt.GruntParser  - Invalid alias: i in {t: (i: integer,d: double,c: chararray)}
      111064 [main] ERROR org.apache.pig.tools.grunt.GruntParser  - java.io.IOException: Invalid alias: i in {t: (i: integer,d: double,c: chararray)}
      grunt> c = foreach b generate b.t;
      grunt> describe c;
      c: {t: {i: integer,d: double,c: chararray}}
      
      

      Attachments

        1. PIG-449.patch
          27 kB
          Pradeep Kamath

        Activity

          People

            pkamath Pradeep Kamath
            sms Santhosh Muthur Srinivasan
            Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: