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 2016/12/02 08:02:04 UTC
[14/50] [abbrv] incubator-hivemall git commit: change to select_k_best
change to select_k_best
Project: http://git-wip-us.apache.org/repos/asf/incubator-hivemall/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hivemall/commit/89c81aac
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hivemall/tree/89c81aac
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hivemall/diff/89c81aac
Branch: refs/heads/JIRA-22/pr-385
Commit: 89c81aacf5b13f6e125723cb5c703333574c10ae
Parents: be1ea37
Author: amaya <gi...@sapphire.in.net>
Authored: Wed Sep 21 10:56:59 2016 +0900
Committer: amaya <gi...@sapphire.in.net>
Committed: Wed Sep 21 13:35:16 2016 +0900
----------------------------------------------------------------------
.../tools/array/ArrayTopKIndicesUDF.java | 115 ---------------
.../hivemall/tools/array/SelectKBestUDF.java | 143 +++++++++++++++++++
.../tools/array/SubarrayByIndicesUDF.java | 111 --------------
resources/ddl/define-all-as-permanent.hive | 9 +-
resources/ddl/define-all.hive | 9 +-
resources/ddl/define-all.spark | 7 +-
resources/ddl/define-udfs.td.hql | 3 +-
7 files changed, 152 insertions(+), 245 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-hivemall/blob/89c81aac/core/src/main/java/hivemall/tools/array/ArrayTopKIndicesUDF.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/hivemall/tools/array/ArrayTopKIndicesUDF.java b/core/src/main/java/hivemall/tools/array/ArrayTopKIndicesUDF.java
deleted file mode 100644
index f895f9b..0000000
--- a/core/src/main/java/hivemall/tools/array/ArrayTopKIndicesUDF.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Hivemall: Hive scalable Machine Learning Library
- *
- * Copyright (C) 2016 Makoto YUI
- * Copyright (C) 2013-2015 National Institute of Advanced Industrial Science and Technology (AIST)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package hivemall.tools.array;
-
-import hivemall.utils.hadoop.HiveUtils;
-import hivemall.utils.lang.Preconditions;
-import org.apache.hadoop.hive.ql.exec.Description;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDF;
-import org.apache.hadoop.hive.serde2.objectinspector.ListObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-import org.apache.hadoop.io.IntWritable;
-
-import java.util.AbstractMap;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-
-@Description(
- name = "array_top_k_indices",
- value = "_FUNC_(array<number> array, const int k) - Returns indices array of top-k as array<int>")
-public class ArrayTopKIndicesUDF extends GenericUDF {
- private ListObjectInspector arrayOI;
- private PrimitiveObjectInspector elementOI;
- private PrimitiveObjectInspector kOI;
-
- @Override
- public ObjectInspector initialize(ObjectInspector[] OIs) throws UDFArgumentException {
- if (OIs.length != 2) {
- throw new UDFArgumentLengthException("Specify two or three arguments.");
- }
-
- if (!HiveUtils.isNumberListOI(OIs[0])) {
- throw new UDFArgumentTypeException(0,
- "Only array<number> type argument is acceptable but " + OIs[0].getTypeName()
- + " was passed as `array`");
- }
- if (!HiveUtils.isIntegerOI(OIs[1])) {
- throw new UDFArgumentTypeException(1, "Only int type argument is acceptable but "
- + OIs[1].getTypeName() + " was passed as `k`");
- }
-
- arrayOI = HiveUtils.asListOI(OIs[0]);
- elementOI = HiveUtils.asDoubleCompatibleOI(arrayOI.getListElementObjectInspector());
- kOI = HiveUtils.asIntegerOI(OIs[1]);
-
- return ObjectInspectorFactory.getStandardListObjectInspector(PrimitiveObjectInspectorFactory.writableIntObjectInspector);
- }
-
- @Override
- public Object evaluate(GenericUDF.DeferredObject[] dObj) throws HiveException {
- final double[] array = HiveUtils.asDoubleArray(dObj[0].get(), arrayOI, elementOI);
- final int k = PrimitiveObjectInspectorUtils.getInt(dObj[1].get(), kOI);
-
- Preconditions.checkNotNull(array);
- Preconditions.checkArgument(array.length >= k);
-
- List<Map.Entry<Integer, Double>> list = new ArrayList<Map.Entry<Integer, Double>>();
- for (int i = 0; i < array.length; i++) {
- list.add(new AbstractMap.SimpleEntry<Integer, Double>(i, array[i]));
- }
- list.sort(new Comparator<Map.Entry<Integer, Double>>() {
- @Override
- public int compare(Map.Entry<Integer, Double> o1, Map.Entry<Integer, Double> o2) {
- return o1.getValue() > o2.getValue() ? -1 : 1;
- }
- });
-
- List<IntWritable> result = new ArrayList<IntWritable>();
- for (int i = 0; i < k; i++) {
- result.add(new IntWritable(list.get(i).getKey()));
- }
- return result;
- }
-
- @Override
- public String getDisplayString(String[] children) {
- StringBuilder sb = new StringBuilder();
- sb.append("array_top_k_indices");
- sb.append("(");
- if (children.length > 0) {
- sb.append(children[0]);
- for (int i = 1; i < children.length; i++) {
- sb.append(", ");
- sb.append(children[i]);
- }
- }
- sb.append(")");
- return sb.toString();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-hivemall/blob/89c81aac/core/src/main/java/hivemall/tools/array/SelectKBestUDF.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/hivemall/tools/array/SelectKBestUDF.java b/core/src/main/java/hivemall/tools/array/SelectKBestUDF.java
new file mode 100644
index 0000000..bdab5bb
--- /dev/null
+++ b/core/src/main/java/hivemall/tools/array/SelectKBestUDF.java
@@ -0,0 +1,143 @@
+/*
+ * Hivemall: Hive scalable Machine Learning Library
+ *
+ * Copyright (C) 2016 Makoto YUI
+ * Copyright (C) 2013-2015 National Institute of Advanced Industrial Science and Technology (AIST)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package hivemall.tools.array;
+
+import hivemall.utils.hadoop.HiveUtils;
+import hivemall.utils.lang.Preconditions;
+import org.apache.hadoop.hive.ql.exec.Description;
+import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
+import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException;
+import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
+import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDF;
+import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.hive.serde2.objectinspector.ListObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
+import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.DoubleObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.IntObjectInspector;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
+
+import java.util.AbstractMap;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Description(name = "select_k_best",
+ value = "_FUNC_(array<number> array, const array<number> importance_list, const int k)"
+ + " - Returns selected top-k elements as array<double>")
+public class SelectKBestUDF extends GenericUDF {
+ private ListObjectInspector featuresOI;
+ private PrimitiveObjectInspector featureOI;
+ private ListObjectInspector importanceListOI;
+ private PrimitiveObjectInspector importanceOI;
+ private PrimitiveObjectInspector kOI;
+
+ private int[] topKIndices;
+
+ @Override
+ public ObjectInspector initialize(ObjectInspector[] OIs) throws UDFArgumentException {
+ if (OIs.length != 3) {
+ throw new UDFArgumentLengthException("Specify three arguments.");
+ }
+
+ if (!HiveUtils.isNumberListOI(OIs[0])) {
+ throw new UDFArgumentTypeException(0,
+ "Only array<number> type argument is acceptable but " + OIs[0].getTypeName()
+ + " was passed as `features`");
+ }
+ if (!HiveUtils.isNumberListOI(OIs[1])) {
+ throw new UDFArgumentTypeException(1,
+ "Only array<number> type argument is acceptable but " + OIs[1].getTypeName()
+ + " was passed as `importance_list`");
+ }
+ if (!HiveUtils.isIntegerOI(OIs[2])) {
+ throw new UDFArgumentTypeException(2, "Only int type argument is acceptable but "
+ + OIs[2].getTypeName() + " was passed as `k`");
+ }
+
+ featuresOI = HiveUtils.asListOI(OIs[0]);
+ featureOI = HiveUtils.asDoubleCompatibleOI(featuresOI.getListElementObjectInspector());
+ importanceListOI = HiveUtils.asListOI(OIs[1]);
+ importanceOI = HiveUtils.asDoubleCompatibleOI(importanceListOI.getListElementObjectInspector());
+ kOI = HiveUtils.asIntegerOI(OIs[2]);
+
+ return ObjectInspectorFactory.getStandardListObjectInspector(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
+ }
+
+ @Override
+ public Object evaluate(GenericUDF.DeferredObject[] dObj) throws HiveException {
+ final double[] features = HiveUtils.asDoubleArray(dObj[0].get(), featuresOI, featureOI);
+ final double[] importanceList = HiveUtils.asDoubleArray(dObj[1].get(), importanceListOI,
+ importanceOI);
+ final int k = PrimitiveObjectInspectorUtils.getInt(dObj[2].get(), kOI);
+
+ Preconditions.checkNotNull(features);
+ Preconditions.checkNotNull(importanceList);
+ Preconditions.checkArgument(features.length == importanceList.length);
+ Preconditions.checkArgument(features.length >= k);
+
+ if (topKIndices == null) {
+ final List<Map.Entry<Integer, Double>> list = new ArrayList<Map.Entry<Integer, Double>>();
+ for (int i = 0; i < importanceList.length; i++) {
+ list.add(new AbstractMap.SimpleEntry<Integer, Double>(i, importanceList[i]));
+ }
+ Collections.sort(list, new Comparator<Map.Entry<Integer, Double>>() {
+ @Override
+ public int compare(Map.Entry<Integer, Double> o1, Map.Entry<Integer, Double> o2) {
+ return o1.getValue() > o2.getValue() ? -1 : 1;
+ }
+ });
+
+ topKIndices = new int[k];
+ for (int i = 0; i < k; i++) {
+ topKIndices[i] = list.get(i).getKey();
+ }
+ }
+
+ final List<DoubleWritable> result = new ArrayList<DoubleWritable>();
+ for (int idx : topKIndices) {
+ result.add(new DoubleWritable(features[idx]));
+ }
+ return result;
+ }
+
+ @Override
+ public String getDisplayString(String[] children) {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("select_k_best");
+ sb.append("(");
+ if (children.length > 0) {
+ sb.append(children[0]);
+ for (int i = 1; i < children.length; i++) {
+ sb.append(", ");
+ sb.append(children[i]);
+ }
+ }
+ sb.append(")");
+ return sb.toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-hivemall/blob/89c81aac/core/src/main/java/hivemall/tools/array/SubarrayByIndicesUDF.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/hivemall/tools/array/SubarrayByIndicesUDF.java b/core/src/main/java/hivemall/tools/array/SubarrayByIndicesUDF.java
deleted file mode 100644
index 07e158a..0000000
--- a/core/src/main/java/hivemall/tools/array/SubarrayByIndicesUDF.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Hivemall: Hive scalable Machine Learning Library
- *
- * Copyright (C) 2016 Makoto YUI
- * Copyright (C) 2013-2015 National Institute of Advanced Industrial Science and Technology (AIST)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package hivemall.tools.array;
-
-import hivemall.utils.hadoop.HiveUtils;
-import hivemall.utils.lang.Preconditions;
-import org.apache.hadoop.hive.ql.exec.Description;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
-import org.apache.hadoop.hive.ql.metadata.HiveException;
-import org.apache.hadoop.hive.ql.udf.generic.GenericUDF;
-import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-import org.apache.hadoop.hive.serde2.objectinspector.ListObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
-import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Description(name = "subarray_by_indices",
- value = "_FUNC_(array<number> input, array<int> indices)"
- + " - Returns subarray selected by given indices as array<number>")
-public class SubarrayByIndicesUDF extends GenericUDF {
- private ListObjectInspector inputOI;
- private PrimitiveObjectInspector elementOI;
- private ListObjectInspector indicesOI;
- private PrimitiveObjectInspector indexOI;
-
- @Override
- public ObjectInspector initialize(ObjectInspector[] OIs) throws UDFArgumentException {
- if (OIs.length != 2) {
- throw new UDFArgumentLengthException("Specify two arguments.");
- }
-
- if (!HiveUtils.isListOI(OIs[0])) {
- throw new UDFArgumentTypeException(0,
- "Only array<number> type argument is acceptable but " + OIs[0].getTypeName()
- + " was passed as `input`");
- }
- if (!HiveUtils.isListOI(OIs[1])
- || !HiveUtils.isIntegerOI(((ListObjectInspector) OIs[1]).getListElementObjectInspector())) {
- throw new UDFArgumentTypeException(0,
- "Only array<int> type argument is acceptable but " + OIs[0].getTypeName()
- + " was passed as `indices`");
- }
-
- inputOI = HiveUtils.asListOI(OIs[0]);
- elementOI = HiveUtils.asDoubleCompatibleOI(inputOI.getListElementObjectInspector());
- indicesOI = HiveUtils.asListOI(OIs[1]);
- indexOI = HiveUtils.asIntegerOI(indicesOI.getListElementObjectInspector());
-
- return ObjectInspectorFactory.getStandardListObjectInspector(PrimitiveObjectInspectorFactory.writableDoubleObjectInspector);
- }
-
- @Override
- public Object evaluate(GenericUDF.DeferredObject[] dObj) throws HiveException {
- final double[] input = HiveUtils.asDoubleArray(dObj[0].get(), inputOI, elementOI);
- final List indices = indicesOI.getList(dObj[1].get());
-
- Preconditions.checkNotNull(input);
- Preconditions.checkNotNull(indices);
-
- List<DoubleWritable> result = new ArrayList<DoubleWritable>();
- for (Object indexObj : indices) {
- int index = PrimitiveObjectInspectorUtils.getInt(indexObj, indexOI);
- if (index > input.length - 1) {
- throw new ArrayIndexOutOfBoundsException(index);
- }
-
- result.add(new DoubleWritable(input[index]));
- }
-
- return result;
- }
-
- @Override
- public String getDisplayString(String[] children) {
- StringBuilder sb = new StringBuilder();
- sb.append("subarray_by_indices");
- sb.append("(");
- if (children.length > 0) {
- sb.append(children[0]);
- for (int i = 1; i < children.length; i++) {
- sb.append(", ");
- sb.append(children[i]);
- }
- }
- sb.append(")");
- return sb.toString();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-hivemall/blob/89c81aac/resources/ddl/define-all-as-permanent.hive
----------------------------------------------------------------------
diff --git a/resources/ddl/define-all-as-permanent.hive b/resources/ddl/define-all-as-permanent.hive
index 52b73a0..adf6a14 100644
--- a/resources/ddl/define-all-as-permanent.hive
+++ b/resources/ddl/define-all-as-permanent.hive
@@ -371,9 +371,6 @@ CREATE FUNCTION subarray_endwith as 'hivemall.tools.array.SubarrayEndWithUDF' US
DROP FUNCTION IF EXISTS subarray_startwith;
CREATE FUNCTION subarray_startwith as 'hivemall.tools.array.SubarrayStartWithUDF' USING JAR '${hivemall_jar}';
-DROP FUNCTION IF EXISTS subarray_by_indices;
-CREATE FUNCTION subarray_by_indices as 'hivemall.tools.array.SubarrayByIndicesUDF' USING JAR '${hivemall_jar}';
-
DROP FUNCTION IF EXISTS array_concat;
CREATE FUNCTION array_concat as 'hivemall.tools.array.ArrayConcatUDF' USING JAR '${hivemall_jar}';
@@ -390,15 +387,15 @@ CREATE FUNCTION array_avg as 'hivemall.tools.array.ArrayAvgGenericUDAF' USING JA
DROP FUNCTION IF EXISTS array_sum;
CREATE FUNCTION array_sum as 'hivemall.tools.array.ArraySumUDAF' USING JAR '${hivemall_jar}';
-DROP FUNCTION array_top_k_indices;
-CREATE FUNCTION array_top_k_indices as 'hivemall.tools.array.ArrayTopKIndicesUDF' USING JAR '${hivemall_jar}';
-
DROP FUNCTION IF EXISTS to_string_array;
CREATE FUNCTION to_string_array as 'hivemall.tools.array.ToStringArrayUDF' USING JAR '${hivemall_jar}';
DROP FUNCTION IF EXISTS array_intersect;
CREATE FUNCTION array_intersect as 'hivemall.tools.array.ArrayIntersectUDF' USING JAR '${hivemall_jar}';
+DROP FUNCTION IF EXISTS select_k_best;
+CREATE FUNCTION select_k_best as 'hivemall.tools.array.SelectKBestUDF' USING JAR '${hivemall_jar}';
+
-----------------------------
-- bit operation functions --
-----------------------------
http://git-wip-us.apache.org/repos/asf/incubator-hivemall/blob/89c81aac/resources/ddl/define-all.hive
----------------------------------------------------------------------
diff --git a/resources/ddl/define-all.hive b/resources/ddl/define-all.hive
index a70ae0f..1586d2e 100644
--- a/resources/ddl/define-all.hive
+++ b/resources/ddl/define-all.hive
@@ -367,9 +367,6 @@ create temporary function subarray_endwith as 'hivemall.tools.array.SubarrayEndW
drop temporary function subarray_startwith;
create temporary function subarray_startwith as 'hivemall.tools.array.SubarrayStartWithUDF';
-drop temporary function subarray_by_indices;
-create temporary function subarray_by_indices as 'hivemall.tools.array.SubarrayByIndicesUDF';
-
drop temporary function array_concat;
create temporary function array_concat as 'hivemall.tools.array.ArrayConcatUDF';
@@ -386,15 +383,15 @@ create temporary function array_avg as 'hivemall.tools.array.ArrayAvgGenericUDAF
drop temporary function array_sum;
create temporary function array_sum as 'hivemall.tools.array.ArraySumUDAF';
-drop temporary function array_top_k_indices;
-create temporary function array_top_k_indices as 'hivemall.tools.array.ArrayTopKIndicesUDF';
-
drop temporary function to_string_array;
create temporary function to_string_array as 'hivemall.tools.array.ToStringArrayUDF';
drop temporary function array_intersect;
create temporary function array_intersect as 'hivemall.tools.array.ArrayIntersectUDF';
+drop temporary function select_k_best;
+create temporary function select_k_best as 'hivemall.tools.array.SelectKBestUDF';
+
-----------------------------
-- bit operation functions --
-----------------------------
http://git-wip-us.apache.org/repos/asf/incubator-hivemall/blob/89c81aac/resources/ddl/define-all.spark
----------------------------------------------------------------------
diff --git a/resources/ddl/define-all.spark b/resources/ddl/define-all.spark
index e009511..50d560b 100644
--- a/resources/ddl/define-all.spark
+++ b/resources/ddl/define-all.spark
@@ -316,9 +316,6 @@ sqlContext.sql("CREATE TEMPORARY FUNCTION subarray_endwith AS 'hivemall.tools.ar
sqlContext.sql("DROP TEMPORARY FUNCTION IF EXISTS subarray_startwith")
sqlContext.sql("CREATE TEMPORARY FUNCTION subarray_startwith AS 'hivemall.tools.array.SubarrayStartWithUDF'")
-sqlContext.sql("DROP TEMPORARY FUNCTION IF EXISTS subarray_by_indices")
-sqlContext.sql("CREATE TEMPORARY FUNCTION subarray_by_indices AS 'hivemall.tools.array.SubarrayByIndicesUDF'")
-
sqlContext.sql("DROP TEMPORARY FUNCTION IF EXISTS collect_all")
sqlContext.sql("CREATE TEMPORARY FUNCTION collect_all AS 'hivemall.tools.array.CollectAllUDAF'")
@@ -331,8 +328,8 @@ sqlContext.sql("CREATE TEMPORARY FUNCTION subarray AS 'hivemall.tools.array.Suba
sqlContext.sql("DROP TEMPORARY FUNCTION IF EXISTS array_avg")
sqlContext.sql("CREATE TEMPORARY FUNCTION array_avg AS 'hivemall.tools.array.ArrayAvgGenericUDAF'")
-sqlContext.sql("DROP TEMPORARY FUNCTION IF EXISTS array_top_k_indices")
-sqlContext.sql("CREATE TEMPORARY FUNCTION array_top_k_indices AS 'hivemall.tools.array.ArrayTopKIndicesUDF'")
+sqlContext.sql("DROP TEMPORARY FUNCTION IF EXISTS select_k_best")
+sqlContext.sql("CREATE TEMPORARY FUNCTION select_k_best AS 'hivemall.tools.array.SelectKBestUDF'")
/**
* compression functions
http://git-wip-us.apache.org/repos/asf/incubator-hivemall/blob/89c81aac/resources/ddl/define-udfs.td.hql
----------------------------------------------------------------------
diff --git a/resources/ddl/define-udfs.td.hql b/resources/ddl/define-udfs.td.hql
index 92e4003..601eead 100644
--- a/resources/ddl/define-udfs.td.hql
+++ b/resources/ddl/define-udfs.td.hql
@@ -95,14 +95,13 @@ create temporary function array_remove as 'hivemall.tools.array.ArrayRemoveUDF';
create temporary function sort_and_uniq_array as 'hivemall.tools.array.SortAndUniqArrayUDF';
create temporary function subarray_endwith as 'hivemall.tools.array.SubarrayEndWithUDF';
create temporary function subarray_startwith as 'hivemall.tools.array.SubarrayStartWithUDF';
-create temporary function subarray_by_indices as 'hivemall.tools.array.SubarrayByIndicesUDF';
create temporary function array_concat as 'hivemall.tools.array.ArrayConcatUDF';
create temporary function subarray as 'hivemall.tools.array.SubarrayUDF';
create temporary function array_avg as 'hivemall.tools.array.ArrayAvgGenericUDAF';
create temporary function array_sum as 'hivemall.tools.array.ArraySumUDAF';
-create temporary function array_top_k_indices as 'hivemall.tools.array.ArrayTopKIndicesUDF';
create temporary function to_string_array as 'hivemall.tools.array.ToStringArrayUDF';
create temporary function array_intersect as 'hivemall.tools.array.ArrayIntersectUDF';
+create temporary function select_k_best as 'hivemall.tools.array.SelectKBestUDF';
create temporary function bits_collect as 'hivemall.tools.bits.BitsCollectUDAF';
create temporary function to_bits as 'hivemall.tools.bits.ToBitsUDF';
create temporary function unbits as 'hivemall.tools.bits.UnBitsUDF';