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

NPE thrown during illustrate

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 0.10.0
    • None
    • impl
    • None

    Description

      working with version
      https://svn.apache.org/repos/asf/pig/trunk@1146777
      fetched from git
      git://git.apache.org/pig.git a7e1228a0fdfe76c3cff0e749e252dba8d387052

      using file /tmp/data.tsv
      id1 123
      id1 234
      id2 345
      id2 456

      this is the most cutdown/simplest script i can make that illustrates (no pun intended) the problem
      grunt> data = load '/tmp/data.tsv' as (id:chararray, value:long);
      grunt> cogrouped = cogroup data by id;
      grunt> exists = foreach cogrouped generate (IsEmpty(data.value) ? 0 : 1) as exists;

      grunt> dump exists
      is ok

      but
      grunt> illustrate exists
      throws
      java.lang.NullPointerException
      at org.apache.pig.pen.IllustratorAttacher.visitBinCond(IllustratorAttacher.java:360)
      at org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POBinCond.visit(POBinCond.java:145)
      at org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.POBinCond.visit(POBinCond.java:36)
      at org.apache.pig.impl.plan.DepthFirstWalker.depthFirst(DepthFirstWalker.java:69)
      at org.apache.pig.impl.plan.DepthFirstWalker.depthFirst(DepthFirstWalker.java:71)
      at org.apache.pig.impl.plan.DepthFirstWalker.depthFirst(DepthFirstWalker.java:71)
      at org.apache.pig.impl.plan.DepthFirstWalker.depthFirst(DepthFirstWalker.java:71)
      at org.apache.pig.impl.plan.DepthFirstWalker.walk(DepthFirstWalker.java:52)
      at org.apache.pig.pen.IllustratorAttacher.innerPlanAttach(IllustratorAttacher.java:417)
      at org.apache.pig.pen.IllustratorAttacher.visitPOForEach(IllustratorAttacher.java:229)
      at org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POForEach.visit(POForEach.java:117)
      at org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POForEach.visit(POForEach.java:47)
      at org.apache.pig.impl.plan.DepthFirstWalker.depthFirst(DepthFirstWalker.java:69)
      at org.apache.pig.impl.plan.DepthFirstWalker.depthFirst(DepthFirstWalker.java:71)
      at org.apache.pig.impl.plan.DepthFirstWalker.depthFirst(DepthFirstWalker.java:71)
      at org.apache.pig.impl.plan.DepthFirstWalker.depthFirst(DepthFirstWalker.java:71)
      at org.apache.pig.impl.plan.DepthFirstWalker.depthFirst(DepthFirstWalker.java:71)
      at org.apache.pig.impl.plan.DepthFirstWalker.depthFirst(DepthFirstWalker.java:71)
      at org.apache.pig.impl.plan.DepthFirstWalker.walk(DepthFirstWalker.java:52)
      at org.apache.pig.impl.plan.PlanVisitor.visit(PlanVisitor.java:51)
      at org.apache.pig.pen.ExampleGenerator.getData(ExampleGenerator.java:246)
      at org.apache.pig.pen.ExampleGenerator.getData(ExampleGenerator.java:238)
      at org.apache.pig.pen.LineageTrimmingVisitor.init(LineageTrimmingVisitor.java:103)
      at org.apache.pig.pen.LineageTrimmingVisitor.<init>(LineageTrimmingVisitor.java:98)
      at org.apache.pig.pen.ExampleGenerator.getExamples(ExampleGenerator.java:166)
      at org.apache.pig.PigServer.getExamples(PigServer.java:1201)
      at org.apache.pig.tools.grunt.GruntParser.processIllustrate(GruntParser.java:698)
      at org.apache.pig.tools.pigscript.parser.PigScriptParser.Illustrate(PigScriptParser.java:591)
      at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:306)
      at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:188)
      at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:164)
      at org.apache.pig.tools.grunt.Grunt.run(Grunt.java:67)
      at org.apache.pig.Main.run(Main.java:487)
      at org.apache.pig.Main.main(Main.java:108)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.apache.hadoop.util.RunJar.main(RunJar.java:156)

      with pig.log containing
      java.io.IOException: Exception : null
      at org.apache.pig.PigServer.getExamples(PigServer.java:1207)
      at org.apache.pig.tools.grunt.GruntParser.processIllustrate(GruntParser.java:698)
      at org.apache.pig.tools.pigscript.parser.PigScriptParser.Illustrate(PigScriptParser.java:591)
      at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:306)
      at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:188)
      at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:164)
      at org.apache.pig.tools.grunt.Grunt.run(Grunt.java:67)
      at org.apache.pig.Main.run(Main.java:487)
      at org.apache.pig.Main.main(Main.java:108)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at org.apache.hadoop.util.RunJar.main(RunJar.java:156)

      something to do with the IsEmpty since...
      grunt> data = load '/tmp/data.tsv' as (id:chararray, value:long);
      grunt> cogrouped = cogroup data by id;
      grunt> exists = foreach cogrouped generate data.value as exists;
      illustrates ok

      Attachments

        1. PIG-2170.2.patch
          10 kB
          Thejas Nair
        2. PIG-2170.1.patch
          10 kB
          Thejas Nair

        Activity

          People

            thejas Thejas Nair
            mat_kelcey Mat Kelcey
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: