You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apex.apache.org by ch...@apache.org on 2015/09/10 00:31:52 UTC

[04/50] [abbrv] incubator-apex-malhar git commit: Made Sampler operator simpler to use.

Made Sampler operator simpler to use.


Project: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/commit/e1392b05
Tree: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/tree/e1392b05
Diff: http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/diff/e1392b05

Branch: refs/heads/master
Commit: e1392b0540a4c29ffeee1c16f8e6b7478adf94da
Parents: dd15161
Author: Timothy Farkas <ti...@datatorrent.com>
Authored: Mon Jul 27 12:53:58 2015 -0700
Committer: thomas <th...@datatorrent.com>
Committed: Mon Jul 27 20:23:38 2015 -0700

----------------------------------------------------------------------
 .../java/com/datatorrent/lib/algo/Sampler.java  | 56 +++++++-------------
 .../com/datatorrent/lib/algo/SamplerTest.java   |  3 +-
 2 files changed, 19 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1392b05/library/src/main/java/com/datatorrent/lib/algo/Sampler.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/algo/Sampler.java b/library/src/main/java/com/datatorrent/lib/algo/Sampler.java
index b91f6b6..8eb7103 100644
--- a/library/src/main/java/com/datatorrent/lib/algo/Sampler.java
+++ b/library/src/main/java/com/datatorrent/lib/algo/Sampler.java
@@ -17,6 +17,7 @@ package com.datatorrent.lib.algo;
 
 import java.util.Random;
 
+import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
 
 import com.datatorrent.api.DefaultInputPort;
@@ -55,7 +56,7 @@ import com.datatorrent.lib.util.BaseKeyOperator;
  * </p>
  *
  * @displayName Sampler
- * @category Algorithmic
+ * @category Stats and Aggregations
  * @tags filter
  *
  * @since 0.3.2
@@ -70,13 +71,13 @@ public class Sampler<K> extends BaseKeyOperator<K>
   public final transient DefaultInputPort<K> data = new DefaultInputPort<K>()
   {
     /**
-     * Emits the tuple as per probability of passrate out of totalrate
+     * Emits tuples at a rate corresponding to the given samplingPercentage.
      */
     @Override
     public void process(K tuple)
     {
-      int fval = random.nextInt(totalrate);
-      if (fval >= passrate) {
+      double val = random.nextDouble();
+      if (val > samplingPercentage) {
         return;
       }
       sample.emit(cloneKey(tuple));
@@ -88,49 +89,28 @@ public class Sampler<K> extends BaseKeyOperator<K>
    */
   public final transient DefaultOutputPort<K> sample = new DefaultOutputPort<K>();
 
-  @Min(1)
-  int passrate = 1;
-  @Min(1)
-  int totalrate = 100;
-  private transient Random random = new Random();
-
-  /**
-   * getter function for pass rate
-   * @return passrate
-   */
-  @Min(1)
-  public int getPassrate()
-  {
-    return passrate;
-  }
+  @Min(0)
+  @Max(1)
+  private double samplingPercentage = 1.0;
 
-  /**
-   * getter function for total rate
-   * @return totalrate
-   */
-  @Min(1)
-  public int getTotalrate()
-  {
-    return totalrate;
-  }
+  private transient Random random = new Random();
 
   /**
-   * Sets pass rate
-   *
-   * @param val passrate is set to val
+   * Gets the samplingPercentage.
+   * @return the samplingPercentage
    */
-  public void setPassrate(int val)
+  public double getSamplingPercentage()
   {
-    passrate = val;
+    return samplingPercentage;
   }
 
   /**
-   * Sets total rate
-   *
-   * @param val total rate is set to val
+   * The percentage of tuples to allow to pass through this operator. This percentage should be
+   * a number between 0 and 1 inclusive.
+   * @param samplingPercentage the samplingPercentage to set
    */
-  public void setTotalrate(int val)
+  public void setSamplingPercentage(double samplingPercentage)
   {
-    totalrate = val;
+    this.samplingPercentage = samplingPercentage;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-apex-malhar/blob/e1392b05/library/src/test/java/com/datatorrent/lib/algo/SamplerTest.java
----------------------------------------------------------------------
diff --git a/library/src/test/java/com/datatorrent/lib/algo/SamplerTest.java b/library/src/test/java/com/datatorrent/lib/algo/SamplerTest.java
index ed21339..5a8c71a 100644
--- a/library/src/test/java/com/datatorrent/lib/algo/SamplerTest.java
+++ b/library/src/test/java/com/datatorrent/lib/algo/SamplerTest.java
@@ -38,8 +38,7 @@ public class SamplerTest
     Sampler<String> oper = new Sampler<String>();
     CountTestSink sink = new CountTestSink<String>();
     oper.sample.setSink(sink);
-    oper.setPassrate(10);
-    oper.setTotalrate(100);
+    oper.setSamplingPercentage(.1);
 
     String tuple = "a";