You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by da...@apache.org on 2014/02/21 01:19:39 UTC
svn commit: r1570401 - in /pig/trunk: CHANGES.txt
contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/evaluation/Over.java
contrib/piggybank/java/src/test/java/org/apache/pig/piggybank/evaluation/TestOver.java
Author: daijy
Date: Fri Feb 21 00:19:39 2014
New Revision: 1570401
URL: http://svn.apache.org/r1570401
Log:
PIG-3774: Piggybank Over UDF get wrong result
Modified:
pig/trunk/CHANGES.txt
pig/trunk/contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/evaluation/Over.java
pig/trunk/contrib/piggybank/java/src/test/java/org/apache/pig/piggybank/evaluation/TestOver.java
Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1570401&r1=1570400&r2=1570401&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Fri Feb 21 00:19:39 2014
@@ -225,6 +225,8 @@ PIG-3480: TFile-based tmpfile compressio
BUG FIXES
+PIG-3774: Piggybank Over UDF get wrong result (daijy)
+
PIG-3657: New partition filter extractor fails with NPE (cheolsoo)
PIG-3347: Store invocation brings side effect (daijy)
Modified: pig/trunk/contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/evaluation/Over.java
URL: http://svn.apache.org/viewvc/pig/trunk/contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/evaluation/Over.java?rev=1570401&r1=1570400&r2=1570401&view=diff
==============================================================================
--- pig/trunk/contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/evaluation/Over.java (original)
+++ pig/trunk/contrib/piggybank/java/src/main/java/org/apache/pig/piggybank/evaluation/Over.java Fri Feb 21 00:19:39 2014
@@ -349,7 +349,8 @@ public class Over extends EvalFunc<DataB
} else if ("percent_rank".equalsIgnoreCase(agg)) {
func = new PercentRank(udfArgs);
} else if ("cume_dist".equalsIgnoreCase(agg)) {
- func = new CumeDist(udfArgs);
+ //func = new CumeDist(udfArgs);
+ func = new CumeDist();
} else if ("debug".equalsIgnoreCase(agg)) {
func = new Debug();
} else {
@@ -755,6 +756,7 @@ public class Over extends EvalFunc<DataB
}
}
+ /*
private static class CumeDist extends BaseRank<Double> {
CumeDist(Object[] args) throws IOException {
super(args);
@@ -768,6 +770,20 @@ public class Over extends EvalFunc<DataB
return ((double)lastRankUsed) / (double)iter.tuples.size();
}
}
+ */
+
+ private static class CumeDist extends ResetableEvalFunc<Double> {
+
+ @Override
+ public Double exec(Tuple input) throws IOException {
+ DataBag inbag = (DataBag)input.get(0);
+ OverBag.OverBagIterator iter =
+ (OverBag.OverBagIterator)inbag.iterator();
+
+ return ((double)++currentRow)/(double)iter.tuples.size();
+ }
+ }
+
Modified: pig/trunk/contrib/piggybank/java/src/test/java/org/apache/pig/piggybank/evaluation/TestOver.java
URL: http://svn.apache.org/viewvc/pig/trunk/contrib/piggybank/java/src/test/java/org/apache/pig/piggybank/evaluation/TestOver.java?rev=1570401&r1=1570400&r2=1570401&view=diff
==============================================================================
--- pig/trunk/contrib/piggybank/java/src/test/java/org/apache/pig/piggybank/evaluation/TestOver.java (original)
+++ pig/trunk/contrib/piggybank/java/src/test/java/org/apache/pig/piggybank/evaluation/TestOver.java Fri Feb 21 00:19:39 2014
@@ -1610,6 +1610,13 @@ public class TestOver {
t.set(4, 0);
DataBag outbag = func.exec(t);
assertEquals(7, outbag.size());
+ int count = 1;
+ for (Tuple to : outbag) {
+ assertEquals(1, to.size());
+ assertEquals(count/7.0, to.get(0));
+ count++;
+ }
+ /*
Iterator<Tuple> iter = outbag.iterator();
t = iter.next();
assertEquals(0.14285714285714285, t.get(0));
@@ -1625,5 +1632,6 @@ public class TestOver {
assertEquals(0.5714285714285714, t.get(0));
t = iter.next();
assertEquals(1.0, t.get(0));
+ */
}
}