aboutsummaryrefslogtreecommitdiff
path: root/sql/hive
diff options
context:
space:
mode:
authorCheng Hao <hao.cheng@intel.com>2014-10-30 23:59:46 -0700
committerMichael Armbrust <michael@databricks.com>2014-10-30 23:59:46 -0700
commit58a6077e56f0f8f75fdd57d3aaad7485aeb07615 (patch)
tree94187748ae1a6630cc91b7ddec6107b28b9489fa /sql/hive
parentd31517a3cd6f887cc66ffd3c8e0c12bace3a948d (diff)
downloadspark-58a6077e56f0f8f75fdd57d3aaad7485aeb07615.tar.gz
spark-58a6077e56f0f8f75fdd57d3aaad7485aeb07615.tar.bz2
spark-58a6077e56f0f8f75fdd57d3aaad7485aeb07615.zip
[SPARK-4143] [SQL] Move inner class DeferredObjectAdapter to top level
The class DeferredObjectAdapter is the inner class of HiveGenericUdf, which may cause some overhead in closure ser/de-ser. Move it to top level. Author: Cheng Hao <hao.cheng@intel.com> Closes #3007 from chenghao-intel/move_deferred and squashes the following commits: 3a139b1 [Cheng Hao] Move inner class DeferredObjectAdapter to top level
Diffstat (limited to 'sql/hive')
-rw-r--r--sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUdfs.scala25
1 files changed, 12 insertions, 13 deletions
diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUdfs.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUdfs.scala
index aff4ddce92..86f7eea5df 100644
--- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUdfs.scala
+++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUdfs.scala
@@ -28,6 +28,7 @@ import org.apache.hadoop.hive.ql.exec.{UDF, UDAF}
import org.apache.hadoop.hive.ql.exec.{FunctionInfo, FunctionRegistry}
import org.apache.hadoop.hive.ql.udf.{UDFType => HiveUDFType}
import org.apache.hadoop.hive.ql.udf.generic._
+import org.apache.hadoop.hive.ql.udf.generic.GenericUDF._
import org.apache.spark.Logging
import org.apache.spark.sql.catalyst.analysis
@@ -134,11 +135,19 @@ private[hive] case class HiveSimpleUdf(functionClassName: String, children: Seq[
}
}
+// Adapter from Catalyst ExpressionResult to Hive DeferredObject
+private[hive] class DeferredObjectAdapter(oi: ObjectInspector)
+ extends DeferredObject with HiveInspectors {
+ private var func: () => Any = _
+ def set(func: () => Any) {
+ this.func = func
+ }
+ override def prepare(i: Int) = {}
+ override def get(): AnyRef = wrap(func(), oi)
+}
+
private[hive] case class HiveGenericUdf(functionClassName: String, children: Seq[Expression])
extends HiveUdf with HiveInspectors {
-
- import org.apache.hadoop.hive.ql.udf.generic.GenericUDF._
-
type UDFType = GenericUDF
@transient
@@ -161,16 +170,6 @@ private[hive] case class HiveGenericUdf(functionClassName: String, children: Seq
protected lazy val deferedObjects =
argumentInspectors.map(new DeferredObjectAdapter(_)).toArray[DeferredObject]
- // Adapter from Catalyst ExpressionResult to Hive DeferredObject
- class DeferredObjectAdapter(oi: ObjectInspector) extends DeferredObject {
- private var func: () => Any = _
- def set(func: () => Any) {
- this.func = func
- }
- override def prepare(i: Int) = {}
- override def get(): AnyRef = wrap(func(), oi)
- }
-
lazy val dataType: DataType = inspectorToDataType(returnInspector)
override def eval(input: Row): Any = {