You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by xu...@apache.org on 2014/03/25 21:26:42 UTC
svn commit: r1581496 - /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/
Author: xuefu
Date: Tue Mar 25 20:26:41 2014
New Revision: 1581496
URL: http://svn.apache.org/r1581496
Log:
HIVE-6510: Clean up math based UDFs (Lars via Xuefu)
Modified:
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAcos.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAsin.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAtan.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFBaseBitOP.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCos.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDegrees.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFExp.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLn.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog10.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog2.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMath.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRadians.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSign.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSin.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTan.java
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAcos.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAcos.java?rev=1581496&r1=1581495&r2=1581496&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAcos.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAcos.java Tue Mar 25 20:26:41 2014
@@ -26,29 +26,26 @@ import org.apache.hadoop.hive.serde2.io.
/**
* UDFAcos.
- *
*/
-@Description(name = "acos", value = "_FUNC_(x) - returns the arc cosine of x if -1<=x<=1 or "
- + "NULL otherwise", extended = "Example:\n"
- + " > SELECT _FUNC_(1) FROM src LIMIT 1;\n" + " 0\n"
- + " > SELECT _FUNC_(2) FROM src LIMIT 1;\n" + " NULL")
+@Description(name = "acos",
+ value = "_FUNC_(x) - returns the arc cosine of x if -1<=x<=1 or " + "NULL otherwise",
+ extended = "Example:\n"
+ + " > SELECT _FUNC_(1) FROM src LIMIT 1;\n"
+ + " 0\n"
+ + " > SELECT _FUNC_(2) FROM src LIMIT 1;\n"
+ + " NULL")
@VectorizedExpressions({FuncACosLongToDouble.class, FuncACosDoubleToDouble.class})
public class UDFAcos extends UDFMath {
- private final DoubleWritable result = new DoubleWritable();
- public UDFAcos() {
- }
+ private final DoubleWritable result = new DoubleWritable();
/**
* Take Arc Cosine of a in radians.
*/
- public DoubleWritable evaluate(DoubleWritable a) {
- if (a == null) {
- return null;
- } else {
- result.set(Math.acos(a.get()));
- return result;
- }
+ @Override
+ protected DoubleWritable doEvaluate(DoubleWritable a) {
+ result.set(Math.acos(a.get()));
+ return result;
}
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAsin.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAsin.java?rev=1581496&r1=1581495&r2=1581496&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAsin.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAsin.java Tue Mar 25 20:26:41 2014
@@ -26,31 +26,26 @@ import org.apache.hadoop.hive.serde2.io.
/**
* UDFAsin.
- *
*/
@Description(name = "asin",
- value = "_FUNC_(x) - returns the arc sine of x if -1<=x<=1 or NULL otherwise",
- extended = "Example:\n"
- + " > SELECT _FUNC_(0) FROM src LIMIT 1;\n"
- + " 0\n"
- + " > SELECT _FUNC_(2) FROM src LIMIT 1;\n" + " NULL")
+ value = "_FUNC_(x) - returns the arc sine of x if -1<=x<=1 or NULL otherwise",
+ extended = "Example:\n"
+ + " > SELECT _FUNC_(0) FROM src LIMIT 1;\n"
+ + " 0\n"
+ + " > SELECT _FUNC_(2) FROM src LIMIT 1;\n"
+ + " NULL")
@VectorizedExpressions({FuncASinLongToDouble.class, FuncASinDoubleToDouble.class})
public class UDFAsin extends UDFMath {
- private final DoubleWritable result = new DoubleWritable();
- public UDFAsin() {
- }
+ private final DoubleWritable result = new DoubleWritable();
/**
* Take Arc Sine of a in radians.
*/
- public DoubleWritable evaluate(DoubleWritable a) {
- if (a == null) {
- return null;
- } else {
- result.set(Math.asin(a.get()));
- return result;
- }
+ @Override
+ protected DoubleWritable doEvaluate(DoubleWritable a) {
+ result.set(Math.asin(a.get()));
+ return result;
}
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAtan.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAtan.java?rev=1581496&r1=1581495&r2=1581496&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAtan.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAtan.java Tue Mar 25 20:26:41 2014
@@ -18,39 +18,27 @@
package org.apache.hadoop.hive.ql.udf;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedExpressions;
import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.FuncATanDoubleToDouble;
import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.FuncATanLongToDouble;
import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-@Description(
- name = "atan",
- value = "_FUNC_(x) - returns the atan (arctan) of x (x is in radians)",
- extended = "Example:\n " +
- " > SELECT _FUNC_(0) FROM src LIMIT 1;\n" +
- " 0"
- )
+@Description(name = "atan",
+ value = "_FUNC_(x) - returns the atan (arctan) of x (x is in radians)",
+ extended = "Example:\n "
+ + " > SELECT _FUNC_(0) FROM src LIMIT 1;\n"
+ + " 0"
+)
@VectorizedExpressions({FuncATanLongToDouble.class, FuncATanDoubleToDouble.class})
public class UDFAtan extends UDFMath {
- @SuppressWarnings("unused")
- private static Log LOG = LogFactory.getLog(UDFAtan.class.getName());
+ private final DoubleWritable result = new DoubleWritable();
- DoubleWritable result = new DoubleWritable();
-
- public UDFAtan() {
- }
-
- public DoubleWritable evaluate(DoubleWritable x) {
- if (x == null) {
- return null;
- } else {
- result.set(Math.atan(x.get()));
- return result;
- }
+ @Override
+ protected DoubleWritable doEvaluate(DoubleWritable a) {
+ result.set(Math.atan(a.get()));
+ return result;
}
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFBaseBitOP.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFBaseBitOP.java?rev=1581496&r1=1581495&r2=1581496&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFBaseBitOP.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFBaseBitOP.java Tue Mar 25 20:26:41 2014
@@ -30,13 +30,6 @@ import org.apache.hadoop.io.LongWritable
*/
public abstract class UDFBaseBitOP extends UDF {
- /**
- * Constructor.
- */
- public UDFBaseBitOP() {
- super();
- }
-
protected ByteWritable byteWritable = new ByteWritable();
protected ShortWritable shortWritable = new ShortWritable();
protected IntWritable intWritable = new IntWritable();
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCos.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCos.java?rev=1581496&r1=1581495&r2=1581496&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCos.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCos.java Tue Mar 25 20:26:41 2014
@@ -26,29 +26,25 @@ import org.apache.hadoop.hive.serde2.io.
/**
* UDFCos.
- *
*/
@Description(name = "cos",
- value = "_FUNC_(x) - returns the cosine of x (x is in radians)",
- extended = "Example:\n "
- + " > SELECT _FUNC_(0) FROM src LIMIT 1;\n" + " 1")
+ value = "_FUNC_(x) - returns the cosine of x (x is in radians)",
+ extended = "Example:\n "
+ + " > SELECT _FUNC_(0) FROM src LIMIT 1;\n"
+ + " 1"
+)
@VectorizedExpressions({FuncCosDoubleToDouble.class, FuncCosLongToDouble.class})
public class UDFCos extends UDFMath {
- private final DoubleWritable result = new DoubleWritable();
- public UDFCos() {
- }
+ private final DoubleWritable result = new DoubleWritable();
/**
* Take Cosine of a.
*/
- public DoubleWritable evaluate(DoubleWritable a) {
- if (a == null) {
- return null;
- } else {
- result.set(Math.cos(a.get()));
- return result;
- }
+ @Override
+ protected DoubleWritable doEvaluate(DoubleWritable a) {
+ result.set(Math.cos(a.get()));
+ return result;
}
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDegrees.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDegrees.java?rev=1581496&r1=1581495&r2=1581496&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDegrees.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDegrees.java Tue Mar 25 20:26:41 2014
@@ -17,38 +17,27 @@
*/
package org.apache.hadoop.hive.ql.udf;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedExpressions;
import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.FuncDegreesDoubleToDouble;
import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.FuncDegreesLongToDouble;
import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-@Description(
- name = "UDFDegrees",
- value = "_FUNC_(x) - Converts radians to degrees",
- extended = "Example:\n" +
- " > SELECT _FUNC_(30) FROM src LIMIT 1;\n" +
- " -1\n"
- )
+@Description(name = "UDFDegrees",
+ value = "_FUNC_(x) - Converts radians to degrees",
+ extended = "Example:\n"
+ + " > SELECT _FUNC_(30) FROM src LIMIT 1;\n"
+ + " -1\n"
+)
@VectorizedExpressions({FuncDegreesLongToDouble.class, FuncDegreesDoubleToDouble.class})
public class UDFDegrees extends UDFMath {
- @SuppressWarnings("unused")
- private static Log LOG = LogFactory.getLog(UDFDegrees.class.getName());
- DoubleWritable result = new DoubleWritable();
+ private final DoubleWritable result = new DoubleWritable();
- public UDFDegrees() {
- }
-
- public DoubleWritable evaluate(DoubleWritable i) {
- if (i == null) {
- return null;
- } else {
- result.set(Math.toDegrees(i.get()));
- return result;
- }
+ @Override
+ protected DoubleWritable doEvaluate(DoubleWritable a) {
+ result.set(Math.toDegrees(a.get()));
+ return result;
}
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFExp.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFExp.java?rev=1581496&r1=1581495&r2=1581496&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFExp.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFExp.java Tue Mar 25 20:26:41 2014
@@ -26,29 +26,25 @@ import org.apache.hadoop.hive.serde2.io.
/**
* UDFExp.
- *
*/
@Description(name = "exp",
- value = "_FUNC_(x) - Returns e to the power of x",
- extended = "Example:\n "
- + " > SELECT _FUNC_(0) FROM src LIMIT 1;\n" + " 1")
+ value = "_FUNC_(x) - Returns e to the power of x",
+ extended = "Example:\n "
+ + " > SELECT _FUNC_(0) FROM src LIMIT 1;\n"
+ + " 1"
+)
@VectorizedExpressions({FuncExpDoubleToDouble.class, FuncExpLongToDouble.class})
public class UDFExp extends UDFMath {
- private final DoubleWritable result = new DoubleWritable();
- public UDFExp() {
- }
+ private final DoubleWritable result = new DoubleWritable();
/**
* Raise e (the base of natural logarithm) to the power of a.
*/
- public DoubleWritable evaluate(DoubleWritable a) {
- if (a == null) {
- return null;
- } else {
- result.set(Math.exp(a.get()));
- return result;
- }
+ @Override
+ protected DoubleWritable doEvaluate(DoubleWritable a) {
+ result.set(Math.exp(a.get()));
+ return result;
}
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLn.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLn.java?rev=1581496&r1=1581495&r2=1581496&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLn.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLn.java Tue Mar 25 20:26:41 2014
@@ -19,33 +19,30 @@
package org.apache.hadoop.hive.ql.udf;
import org.apache.hadoop.hive.ql.exec.Description;
-import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedExpressions;
import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.FuncLnDoubleToDouble;
import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.FuncLnLongToDouble;
import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
/**
* UDFLn.
- *
*/
@Description(name = "ln",
- value = "_FUNC_(x) - Returns the natural logarithm of x",
- extended = "Example:\n"
- + " > SELECT _FUNC_(1) FROM src LIMIT 1;\n" + " 0")
+ value = "_FUNC_(x) - Returns the natural logarithm of x",
+ extended = "Example:\n"
+ + " > SELECT _FUNC_(1) FROM src LIMIT 1;\n"
+ + " 0")
@VectorizedExpressions({FuncLnLongToDouble.class, FuncLnDoubleToDouble.class})
public class UDFLn extends UDFMath {
- private final DoubleWritable result = new DoubleWritable();
- public UDFLn() {
- }
+ private final DoubleWritable result = new DoubleWritable();
/**
* Returns the natural logarithm of "a".
*/
- public DoubleWritable evaluate(DoubleWritable a) {
- if (a == null || a.get() <= 0.0) {
+ @Override
+ protected DoubleWritable doEvaluate(DoubleWritable a) {
+ if (a.get() <= 0.0) {
return null;
} else {
result.set(Math.log(a.get()));
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java?rev=1581496&r1=1581495&r2=1581496&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java Tue Mar 25 20:26:41 2014
@@ -29,31 +29,17 @@ import org.apache.hadoop.hive.serde2.io.
/**
* UDFLog.
- *
*/
@Description(name = "log",
- value = "_FUNC_([b], x) - Returns the logarithm of x with base b",
- extended = "Example:\n"
- + " > SELECT _FUNC_(13, 13) FROM src LIMIT 1;\n" + " 1")
+ value = "_FUNC_([b], x) - Returns the logarithm of x with base b",
+ extended = "Example:\n"
+ + " > SELECT _FUNC_(13, 13) FROM src LIMIT 1;\n"
+ + " 1")
@VectorizedExpressions({FuncLogWithBaseLongToDouble.class, FuncLogWithBaseDoubleToDouble.class,
- FuncLnLongToDouble.class, FuncLnDoubleToDouble.class})
+ FuncLnLongToDouble.class, FuncLnDoubleToDouble.class})
public class UDFLog extends UDFMath {
- private final DoubleWritable result = new DoubleWritable();
-
- public UDFLog() {
- }
- /**
- * Returns the natural logarithm of "a".
- */
- public DoubleWritable evaluate(DoubleWritable a) {
- if (a == null || a.get() <= 0.0) {
- return null;
- } else {
- result.set(Math.log(a.get()));
- return result;
- }
- }
+ private final DoubleWritable result = new DoubleWritable();
/**
* Returns the logarithm of "a" with base "base".
@@ -65,14 +51,6 @@ public class UDFLog extends UDFMath {
return log(base.get(), a.get());
}
- private DoubleWritable log(double base, double input) {
- if( base <= 1.0 || input <= 0.0) {
- return null;
- }
- result.set(Math.log(input) / Math.log(base));
- return result;
- }
-
/**
* Get the logarithm of the given decimal with the given base.
*/
@@ -109,4 +87,25 @@ public class UDFLog extends UDFMath {
return log(base, d);
}
+ /**
+ * Returns the natural logarithm of "a".
+ */
+ @Override
+ protected DoubleWritable doEvaluate(DoubleWritable a) {
+ if (a.get() <= 0.0) {
+ return null;
+ } else {
+ result.set(Math.log(a.get()));
+ return result;
+ }
+ }
+
+ private DoubleWritable log(double base, double input) {
+ if (base <= 1.0 || input <= 0.0) {
+ return null;
+ }
+ result.set(Math.log(input) / Math.log(base));
+ return result;
+ }
+
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog10.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog10.java?rev=1581496&r1=1581495&r2=1581496&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog10.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog10.java Tue Mar 25 20:26:41 2014
@@ -26,24 +26,23 @@ import org.apache.hadoop.hive.serde2.io.
/**
* UDFLog10.
- *
*/
@Description(name = "log10",
- value = "_FUNC_(x) - Returns the logarithm of x with base 10",
- extended = "Example:\n"
- + " > SELECT _FUNC_(10) FROM src LIMIT 1;\n" + " 1")
+ value = "_FUNC_(x) - Returns the logarithm of x with base 10",
+ extended = "Example:\n"
+ + " > SELECT _FUNC_(10) FROM src LIMIT 1;\n"
+ + " 1")
@VectorizedExpressions({FuncLog10LongToDouble.class, FuncLog10DoubleToDouble.class})
public class UDFLog10 extends UDFMath {
- private final DoubleWritable result = new DoubleWritable();
- public UDFLog10() {
- }
+ private final DoubleWritable result = new DoubleWritable();
/**
* Returns the logarithm of "a" with base 10.
*/
- public DoubleWritable evaluate(DoubleWritable a) {
- if (a == null || a.get() <= 0.0) {
+ @Override
+ protected DoubleWritable doEvaluate(DoubleWritable a) {
+ if (a.get() <= 0.0) {
return null;
} else {
result.set(Math.log10(a.get()));
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog2.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog2.java?rev=1581496&r1=1581495&r2=1581496&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog2.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog2.java Tue Mar 25 20:26:41 2014
@@ -26,29 +26,28 @@ import org.apache.hadoop.hive.serde2.io.
/**
* UDFLog2.
- *
*/
@Description(name = "log2",
- value = "_FUNC_(x) - Returns the logarithm of x with base 2",
- extended = "Example:\n"
- + " > SELECT _FUNC_(2) FROM src LIMIT 1;\n" + " 1")
+ value = "_FUNC_(x) - Returns the logarithm of x with base 2",
+ extended = "Example:\n"
+ + " > SELECT _FUNC_(2) FROM src LIMIT 1;\n"
+ + " 1")
@VectorizedExpressions({FuncLog2LongToDouble.class, FuncLog2DoubleToDouble.class})
public class UDFLog2 extends UDFMath {
- private static double log2 = Math.log(2.0);
- private final DoubleWritable result = new DoubleWritable();
+ private static final double LOG_2 = Math.log(2.0);
- public UDFLog2() {
- }
+ private final DoubleWritable result = new DoubleWritable();
/**
* Returns the logarithm of "a" with base 2.
*/
- public DoubleWritable evaluate(DoubleWritable a) {
- if (a == null || a.get() <= 0.0) {
+ @Override
+ protected DoubleWritable doEvaluate(DoubleWritable a) {
+ if (a.get() <= 0.0) {
return null;
} else {
- result.set(Math.log(a.get()) / log2);
+ result.set(Math.log(a.get()) / LOG_2);
return result;
}
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMath.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMath.java?rev=1581496&r1=1581495&r2=1581496&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMath.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMath.java Tue Mar 25 20:26:41 2014
@@ -22,16 +22,29 @@ import org.apache.hadoop.hive.ql.exec.UD
import org.apache.hadoop.hive.serde2.io.DoubleWritable;
import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
+/**
+ * This class can be used for math based UDFs that only have an evaluate method for {@code doubles}. By extending from
+ * this class these UDFs will automatically support decimals as well.
+ */
public abstract class UDFMath extends UDF {
- private final DoubleWritable doubleWritable = new DoubleWritable();
- public UDFMath() {
- }
+ private final DoubleWritable doubleWritable = new DoubleWritable();
/**
* For subclass to implement.
*/
- public abstract DoubleWritable evaluate(DoubleWritable a);
+ protected abstract DoubleWritable doEvaluate(DoubleWritable a);
+
+ /**
+ * Returns {@code null} if the passed in value is {@code} and passes on to {@link #doEvaluate(DoubleWritable)} if not.
+ */
+ public final DoubleWritable evaluate(DoubleWritable a) {
+ if (a == null) {
+ return null;
+ }
+
+ return doEvaluate(a);
+ }
/**
* Convert HiveDecimal to a double and call evaluate() on it.
@@ -43,7 +56,7 @@ public abstract class UDFMath extends UD
double d = writable.getHiveDecimal().bigDecimalValue().doubleValue();
doubleWritable.set(d);
- return evaluate(doubleWritable);
+ return doEvaluate(doubleWritable);
}
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRadians.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRadians.java?rev=1581496&r1=1581495&r2=1581496&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRadians.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRadians.java Tue Mar 25 20:26:41 2014
@@ -17,38 +17,27 @@
*/
package org.apache.hadoop.hive.ql.udf;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedExpressions;
import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.FuncRadiansDoubleToDouble;
import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.FuncRadiansLongToDouble;
import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-@Description(
- name = "radians",
- value = "_FUNC_(x) - Converts degrees to radians",
- extended = "Example:\n" +
- " > SELECT _FUNC_(90) FROM src LIMIT 1;\n" +
- " 1.5707963267949mo\n"
- )
+@Description(name = "radians",
+ value = "_FUNC_(x) - Converts degrees to radians",
+ extended = "Example:\n"
+ + " > SELECT _FUNC_(90) FROM src LIMIT 1;\n"
+ + " 1.5707963267949mo\n"
+)
@VectorizedExpressions({FuncRadiansLongToDouble.class, FuncRadiansDoubleToDouble.class})
public class UDFRadians extends UDFMath {
- @SuppressWarnings("unused")
- private static Log LOG = LogFactory.getLog(UDFRadians.class.getName());
- DoubleWritable result = new DoubleWritable();
+ private final DoubleWritable result = new DoubleWritable();
- public UDFRadians() {
- }
-
- public DoubleWritable evaluate(DoubleWritable i) {
- if (i == null) {
- return null;
- } else {
- result.set(Math.toRadians(i.get()));
- return result;
- }
+ @Override
+ protected DoubleWritable doEvaluate(DoubleWritable a) {
+ result.set(Math.toRadians(a.get()));
+ return result;
}
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSign.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSign.java?rev=1581496&r1=1581495&r2=1581496&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSign.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSign.java Tue Mar 25 20:26:41 2014
@@ -18,8 +18,6 @@
package org.apache.hadoop.hive.ql.udf;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedExpressions;
@@ -30,38 +28,30 @@ import org.apache.hadoop.hive.serde2.io.
import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
import org.apache.hadoop.io.IntWritable;
-@Description(
- name = "sign",
- value = "_FUNC_(x) - returns the sign of x )",
- extended = "Example:\n " +
- " > SELECT _FUNC_(40) FROM src LIMIT 1;\n" +
- " 1"
- )
+@Description(name = "sign",
+ value = "_FUNC_(x) - returns the sign of x )",
+ extended = "Example:\n "
+ + " > SELECT _FUNC_(40) FROM src LIMIT 1;\n"
+ + " 1"
+)
@VectorizedExpressions({FuncSignLongToDouble.class, FuncSignDoubleToDouble.class, FuncSignDecimalToLong.class})
public class UDFSign extends UDF {
- @SuppressWarnings("unused")
- private static Log LOG = LogFactory.getLog(UDFSign.class.getName());
- DoubleWritable result = new DoubleWritable();
- IntWritable intWritable = new IntWritable();
-
- public UDFSign() {
- }
+ private final DoubleWritable result = new DoubleWritable();
+ private final IntWritable intWritable = new IntWritable();
/**
* Take sign of a
*/
- public DoubleWritable evaluate(DoubleWritable a) {
+ public DoubleWritable evaluate(DoubleWritable a) {
if (a == null) {
return null;
}
- if (a.get()==0) {
+ if (a.get() == 0) {
result.set(0);
- }
- else if (a.get()>0) {
+ } else if (a.get() > 0) {
result.set(1);
- }
- else {
+ } else {
result.set(-1);
}
return result;
@@ -69,10 +59,12 @@ public class UDFSign extends UDF {
/**
* Get the sign of the decimal input
+ *
* @param dec decimal input
+ *
* @return -1, 0, or 1 representing the sign of the input decimal
*/
- public IntWritable evaluate(HiveDecimalWritable dec) {
+ public IntWritable evaluate(HiveDecimalWritable dec) {
if (dec == null || dec.getHiveDecimal() == null) {
return null;
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSin.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSin.java?rev=1581496&r1=1581495&r2=1581496&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSin.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSin.java Tue Mar 25 20:26:41 2014
@@ -19,38 +19,31 @@
package org.apache.hadoop.hive.ql.udf;
import org.apache.hadoop.hive.ql.exec.Description;
-import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedExpressions;
import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.FuncSinDoubleToDouble;
import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.FuncSinLongToDouble;
import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
/**
* UDFSin.
- *
*/
@Description(name = "sin",
- value = "_FUNC_(x) - returns the sine of x (x is in radians)",
- extended = "Example:\n "
- + " > SELECT _FUNC_(0) FROM src LIMIT 1;\n" + " 0")
+ value = "_FUNC_(x) - returns the sine of x (x is in radians)",
+ extended = "Example:\n "
+ + " > SELECT _FUNC_(0) FROM src LIMIT 1;\n"
+ + " 0")
@VectorizedExpressions({FuncSinLongToDouble.class, FuncSinDoubleToDouble.class})
public class UDFSin extends UDFMath {
- private final DoubleWritable result = new DoubleWritable();
- public UDFSin() {
- }
+ private final DoubleWritable result = new DoubleWritable();
/**
* Take Sine of a.
*/
- public DoubleWritable evaluate(DoubleWritable a) {
- if (a == null) {
- return null;
- } else {
- result.set(Math.sin(a.get()));
- return result;
- }
+ @Override
+ protected DoubleWritable doEvaluate(DoubleWritable a) {
+ result.set(Math.sin(a.get()));
+ return result;
}
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java?rev=1581496&r1=1581495&r2=1581496&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java Tue Mar 25 20:26:41 2014
@@ -28,26 +28,24 @@ import org.apache.hadoop.hive.serde2.io.
* Implementation of the SQRT UDF found in many databases.
*/
@Description(name = "sqrt",
- value = "_FUNC_(x) - returns the square root of x",
- extended = "Example:\n "
- + " > SELECT _FUNC_(4) FROM src LIMIT 1;\n" + " 2")
+ value = "_FUNC_(x) - returns the square root of x",
+ extended = "Example:\n "
+ + " > SELECT _FUNC_(4) FROM src LIMIT 1;\n"
+ + " 2")
@VectorizedExpressions({FuncSqrtLongToDouble.class, FuncSqrtDoubleToDouble.class})
public class UDFSqrt extends UDFMath {
- private final DoubleWritable result = new DoubleWritable();
- public UDFSqrt() {
- }
+ private final DoubleWritable result = new DoubleWritable();
/**
- * Return NULL for NULL or negative inputs; otherwise, return the square root.
+ * Return NULL for negative inputs; otherwise, return the square root.
*/
- public DoubleWritable evaluate(DoubleWritable i) {
- if (i == null) {
- return null;
- } else if (i.get() < 0) {
+ @Override
+ protected DoubleWritable doEvaluate(DoubleWritable a) {
+ if (a.get() < 0) {
return null;
} else {
- result.set(Math.sqrt(i.get()));
+ result.set(Math.sqrt(a.get()));
return result;
}
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTan.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTan.java?rev=1581496&r1=1581495&r2=1581496&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTan.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTan.java Tue Mar 25 20:26:41 2014
@@ -18,41 +18,30 @@
package org.apache.hadoop.hive.ql.udf;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.vector.VectorizedExpressions;
import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.FuncTanDoubleToDouble;
import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.FuncTanLongToDouble;
import org.apache.hadoop.hive.serde2.io.DoubleWritable;
-@Description(
- name = "tan",
- value = "_FUNC_(x) - returns the tangent of x (x is in radians)",
- extended = "Example:\n " +
- " > SELECT _FUNC_(0) FROM src LIMIT 1;\n" +
- " 1"
- )
+@Description(name = "tan",
+ value = "_FUNC_(x) - returns the tangent of x (x is in radians)",
+ extended = "Example:\n "
+ + " > SELECT _FUNC_(0) FROM src LIMIT 1;\n"
+ + " 1"
+)
@VectorizedExpressions({FuncTanLongToDouble.class, FuncTanDoubleToDouble.class})
public class UDFTan extends UDFMath {
- @SuppressWarnings("unused")
- private static Log LOG = LogFactory.getLog(UDFTan.class.getName());
- DoubleWritable result = new DoubleWritable();
-
- public UDFTan() {
- }
+ private final DoubleWritable result = new DoubleWritable();
/**
* Take Tangent of a
*/
- public DoubleWritable evaluate(DoubleWritable a) {
- if (a == null) {
- return null;
- } else {
- result.set(Math.tan(a.get()));
- return result;
- }
+ @Override
+ protected DoubleWritable doEvaluate(DoubleWritable a) {
+ result.set(Math.tan(a.get()));
+ return result;
}
}