You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hivemall.apache.org by my...@apache.org on 2019/06/10 06:51:23 UTC

[incubator-hivemall] 08/10: relocated private methods

This is an automated email from the ASF dual-hosted git repository.

myui pushed a commit to branch HIVEMALL-253-2
in repository https://gitbox.apache.org/repos/asf/incubator-hivemall.git

commit 4d3d3a7aa3cdb0f2640bcb53b5176e7cd552933f
Author: Makoto Yui <my...@apache.org>
AuthorDate: Mon Jun 10 15:48:08 2019 +0900

    relocated private methods
---
 .../java/hivemall/tools/map/MapRouletteUDF.java    | 96 +++++++++++-----------
 1 file changed, 48 insertions(+), 48 deletions(-)

diff --git a/core/src/main/java/hivemall/tools/map/MapRouletteUDF.java b/core/src/main/java/hivemall/tools/map/MapRouletteUDF.java
index 40d97c7..7aa0132 100644
--- a/core/src/main/java/hivemall/tools/map/MapRouletteUDF.java
+++ b/core/src/main/java/hivemall/tools/map/MapRouletteUDF.java
@@ -60,51 +60,6 @@ import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectIn
 @UDFType(deterministic = false, stateful = false) // it is false because it return value base on probability
 public final class MapRouletteUDF extends GenericUDF {
 
-    /**
-     * The map passed in saved all the value and its weight
-     *
-     * @param m A map contains a lot of item as key, with their weight as value
-     * @return The key that computer selected according to key's weight
-     */
-    @Nullable
-    private static Object algorithm(@Nonnull final Map<Object, Double> m) {
-        if (m.isEmpty()) {
-            return null;
-        }
-
-        // normalize the weight
-        double sum = 0;
-        for (Map.Entry<Object, Double> entry : m.entrySet()) {
-            sum += entry.getValue();
-        }
-        for (Map.Entry<Object, Double> entry : m.entrySet()) {
-            entry.setValue(entry.getValue() / sum);
-        }
-
-        // sort and generate a number axis
-        List<Map.Entry<Object, Double>> entryList = new ArrayList<>(m.entrySet());
-        Collections.sort(entryList, new KvComparator());
-        double tmp = 0;
-        for (Map.Entry<Object, Double> entry : entryList) {
-            tmp += entry.getValue();
-            entry.setValue(tmp);
-        }
-
-        // judge last value
-        if (entryList.get(entryList.size() - 1).getValue() > 1.0) {
-            entryList.get(entryList.size() - 1).setValue(1.0);
-        }
-
-        // pick a Object base on its weight
-        double cursor = Math.random();
-        for (Map.Entry<Object, Double> entry : entryList) {
-            if (cursor < entry.getValue()) {
-                return entry.getKey();
-            }
-        }
-        return null;
-    }
-
     private transient MapObjectInspector mapOI;
     private transient PrimitiveObjectInspector valueOI;
 
@@ -151,6 +106,11 @@ public final class MapRouletteUDF extends GenericUDF {
         return algorithm(input);
     }
 
+    @Override
+    public String getDisplayString(String[] children) {
+        return "map_roulette(" + StringUtils.join(children, ',') + ")";
+    }
+
     /**
      * Process the data passed by user.
      * 
@@ -196,9 +156,49 @@ public final class MapRouletteUDF extends GenericUDF {
         return input;
     }
 
-    @Override
-    public String getDisplayString(String[] children) {
-        return "map_roulette(" + StringUtils.join(children, ',') + ")";
+    /**
+     * The map passed in saved all the value and its weight
+     *
+     * @param m A map contains a lot of item as key, with their weight as value
+     * @return The key that computer selected according to key's weight
+     */
+    @Nullable
+    private static Object algorithm(@Nonnull final Map<Object, Double> m) {
+        if (m.isEmpty()) {
+            return null;
+        }
+
+        // normalize the weight
+        double sum = 0;
+        for (Map.Entry<Object, Double> entry : m.entrySet()) {
+            sum += entry.getValue();
+        }
+        for (Map.Entry<Object, Double> entry : m.entrySet()) {
+            entry.setValue(entry.getValue() / sum);
+        }
+
+        // sort and generate a number axis
+        List<Map.Entry<Object, Double>> entryList = new ArrayList<>(m.entrySet());
+        Collections.sort(entryList, new KvComparator());
+        double tmp = 0;
+        for (Map.Entry<Object, Double> entry : entryList) {
+            tmp += entry.getValue();
+            entry.setValue(tmp);
+        }
+
+        // judge last value
+        if (entryList.get(entryList.size() - 1).getValue() > 1.0) {
+            entryList.get(entryList.size() - 1).setValue(1.0);
+        }
+
+        // pick a Object base on its weight
+        double cursor = Math.random();
+        for (Map.Entry<Object, Double> entry : entryList) {
+            if (cursor < entry.getValue()) {
+                return entry.getKey();
+            }
+        }
+        return null;
     }
 
     private static class KvComparator implements Comparator<Map.Entry<Object, Double>> {