Ok, I think I got it: the assertion is not correct, I've applied the following patch and it works now:

Index: src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/LessThanExpr.java
===================================================================
--- src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/LessThanExpr.java (révision 831242) +++ src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/expressionOperators/LessThanExpr.java (copie de travail)
@@ -123,8 +123,8 @@
             left.returnStatus = POStatus.STATUS_NULL;
             return left;
         }
-        assert(left instanceof Comparable);
-        assert(right instanceof Comparable);
+        assert(left.result instanceof Comparable);
+        assert(right.result instanceof Comparable);
if (((Comparable)left.result).compareTo((Comparable)right.result) < 0) {
             left.result = trueRef;
         } else {


Vincent Barat a écrit :
If I disable the assertion checking, my code seem to run correctly (no error).

Maybe this assertion is deprecated ?

Vincent Barat a écrit :
Hi,

I'm facing a strange assertion (using the current PIG trunk) when trying to perform a simple filter using comparison operator:

pigServer.registerQuery("sessions = FILTER sessions BY end - start < 3600000L;");

This only occurs when running my code in local mode, not in map reduce mode.

I've tried to reproduce it using simple scripts run in local mode that also uses the same kind of comparison, but the assertion does not occur.

Do you have any idea to fix this?

Thanks a lot,


The stack trace is the following:

2009-10-30 10:22:05,813 | FATAL | main | Main | Uncaught handler: thread main (1) exiting due to uncaught exception
java.lang.AssertionError
at org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.LessThanExpr.doComparison(LessThanExpr.java:126) at org.apache.pig.backend.hadoop.executionengine.physicalLayer.expressionOperators.LessThanExpr.getNext(LessThanExpr.java:94) at org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POFilter.getNext(POFilter.java:148) at org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator.processInput(PhysicalOperator.java:231) at org.apache.pig.backend.local.executionengine.physicalLayer.counters.POCounter.getNext(POCounter.java:71) at org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator.processInput(PhysicalOperator.java:231) at org.apache.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators.POStore.getNext(POStore.java:117) at org.apache.pig.backend.local.executionengine.LocalPigLauncher.runPipeline(LocalPigLauncher.java:147) at org.apache.pig.backend.local.executionengine.LocalPigLauncher.launchPig(LocalPigLauncher.java:109) at org.apache.pig.backend.local.executionengine.LocalExecutionEngine.execute(LocalExecutionEngine.java:165) at org.apache.pig.PigServer.executeCompiledLogicalPlan(PigServer.java:779)
    at org.apache.pig.PigServer.store(PigServer.java:528)
    at org.apache.pig.PigServer.store(PigServer.java:493)
    at com.ubikod.ermin.analytics.stats.Stats.prepare(Stats.java:64)
    at com.ubikod.ermin.analytics.stats.Stats.compute(Stats.java:110)
    at com.ubikod.ermin.analytics.Analytics.main(Analytics.java:189)




The full PIG code run from JAVA is the following:

pigServer.registerQuery("start_sessions = LOAD 'startSession' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('meta:sid meta:infoid meta:imei meta:timestamp') " + "AS (sid:chararray, infoid:chararray, imei:chararray, start:long);");

pigServer.registerQuery("end_sessions = LOAD 'endSession' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('meta:sid meta:infoid meta:imei meta:timestamp meta:locid') " + "AS (sid:chararray, infoid:chararray, imei:chararray, end:long, locid:chararray);");

pigServer.registerQuery("global_sessions = JOIN start_sessions BY sid, end_sessions BY sid;");

pigServer.registerQuery("sessions = FILTER sessions BY end - start < 3600000L;");

Reply via email to