diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAcos.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAcos.java index 18c79a7..b84db53 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAcos.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAcos.java @@ -26,29 +26,26 @@ /** * 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; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAsin.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAsin.java index cfd5d38..a5490e6 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAsin.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAsin.java @@ -26,31 +26,26 @@ /** * 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; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAtan.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAtan.java index 641bba2..2e55742 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAtan.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAtan.java @@ -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; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFBaseBitOP.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFBaseBitOP.java index f277ea2..6650c72 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFBaseBitOP.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFBaseBitOP.java @@ -30,13 +30,6 @@ */ 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(); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCos.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCos.java index bfa95ee..3260779 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCos.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCos.java @@ -26,29 +26,25 @@ /** * 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; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDegrees.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDegrees.java index bc5e1e2..7336b50 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDegrees.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDegrees.java @@ -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; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFExp.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFExp.java index cf6f53e..4af021c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFExp.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFExp.java @@ -26,29 +26,25 @@ /** * 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; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLn.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLn.java index eb5f646..402959d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLn.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLn.java @@ -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())); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java index 7a4d8a7..cf25bfe 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java @@ -29,31 +29,17 @@ /** * 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 DoubleWritable evaluate(DoubleWritable base, DoubleWritable a) { 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 DoubleWritable evaluate(HiveDecimalWritable baseWritable, HiveDecimalWrit 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; + } + } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog10.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog10.java index 00dc319..baf53af 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog10.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog10.java @@ -26,24 +26,23 @@ /** * 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())); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog2.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog2.java index 9202258..5951da2 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog2.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog2.java @@ -26,29 +26,28 @@ /** * 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; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMath.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMath.java index c1981af..8087df1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMath.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMath.java @@ -22,16 +22,29 @@ 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 final DoubleWritable evaluate(HiveDecimalWritable writable) { double d = writable.getHiveDecimal().bigDecimalValue().doubleValue(); doubleWritable.set(d); - return evaluate(doubleWritable); + return doEvaluate(doubleWritable); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRadians.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRadians.java index fd1f0e3..591227c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRadians.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRadians.java @@ -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; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSign.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSign.java index 6e4bee0..022b130 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSign.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSign.java @@ -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.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 @@ else if (a.get()>0) { /** * 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; } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSin.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSin.java index 8f757f2..c6914b6 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSin.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSin.java @@ -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; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java index 17094c9..5c56b1d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java @@ -28,26 +28,24 @@ * 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; } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTan.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTan.java index c286619..7c32426 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTan.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTan.java @@ -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; } }