Skip to content

Commit 58a6077

Browse files
chenghao-intelmarmbrus
authored andcommitted
[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 <[email protected]> Closes #3007 from chenghao-intel/move_deferred and squashes the following commits: 3a139b1 [Cheng Hao] Move inner class DeferredObjectAdapter to top level
1 parent d31517a commit 58a6077

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUdfs.scala

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import org.apache.hadoop.hive.ql.exec.{UDF, UDAF}
2828
import org.apache.hadoop.hive.ql.exec.{FunctionInfo, FunctionRegistry}
2929
import org.apache.hadoop.hive.ql.udf.{UDFType => HiveUDFType}
3030
import org.apache.hadoop.hive.ql.udf.generic._
31+
import org.apache.hadoop.hive.ql.udf.generic.GenericUDF._
3132

3233
import org.apache.spark.Logging
3334
import org.apache.spark.sql.catalyst.analysis
@@ -134,11 +135,19 @@ private[hive] case class HiveSimpleUdf(functionClassName: String, children: Seq[
134135
}
135136
}
136137

138+
// Adapter from Catalyst ExpressionResult to Hive DeferredObject
139+
private[hive] class DeferredObjectAdapter(oi: ObjectInspector)
140+
extends DeferredObject with HiveInspectors {
141+
private var func: () => Any = _
142+
def set(func: () => Any) {
143+
this.func = func
144+
}
145+
override def prepare(i: Int) = {}
146+
override def get(): AnyRef = wrap(func(), oi)
147+
}
148+
137149
private[hive] case class HiveGenericUdf(functionClassName: String, children: Seq[Expression])
138150
extends HiveUdf with HiveInspectors {
139-
140-
import org.apache.hadoop.hive.ql.udf.generic.GenericUDF._
141-
142151
type UDFType = GenericUDF
143152

144153
@transient
@@ -161,16 +170,6 @@ private[hive] case class HiveGenericUdf(functionClassName: String, children: Seq
161170
protected lazy val deferedObjects =
162171
argumentInspectors.map(new DeferredObjectAdapter(_)).toArray[DeferredObject]
163172

164-
// Adapter from Catalyst ExpressionResult to Hive DeferredObject
165-
class DeferredObjectAdapter(oi: ObjectInspector) extends DeferredObject {
166-
private var func: () => Any = _
167-
def set(func: () => Any) {
168-
this.func = func
169-
}
170-
override def prepare(i: Int) = {}
171-
override def get(): AnyRef = wrap(func(), oi)
172-
}
173-
174173
lazy val dataType: DataType = inspectorToDataType(returnInspector)
175174

176175
override def eval(input: Row): Any = {

0 commit comments

Comments
 (0)