Skip to content
Snippets Groups Projects
Commit 15b58a22 authored by Michael Armbrust's avatar Michael Armbrust
Browse files

[SQL] Convert arguments to Scala UDFs

Author: Michael Armbrust <michael@databricks.com>

Closes #3077 from marmbrus/udfsWithUdts and squashes the following commits:

34b5f27 [Michael Armbrust] style
504adef [Michael Armbrust] Convert arguments to Scala UDFs
parent 28128150
No related branches found
No related tags found
No related merge requests found
...@@ -34,320 +34,366 @@ case class ScalaUdf(function: AnyRef, dataType: DataType, children: Seq[Expressi ...@@ -34,320 +34,366 @@ case class ScalaUdf(function: AnyRef, dataType: DataType, children: Seq[Expressi
override def toString = s"scalaUDF(${children.mkString(",")})" override def toString = s"scalaUDF(${children.mkString(",")})"
// scalastyle:off
/** This method has been generated by this script /** This method has been generated by this script
(1 to 22).map { x => (1 to 22).map { x =>
val anys = (1 to x).map(x => "Any").reduce(_ + ", " + _) val anys = (1 to x).map(x => "Any").reduce(_ + ", " + _)
val evals = (0 to x - 1).map(x => s"children($x).eval(input)").reduce(_ + ",\n " + _) val evals = (0 to x - 1).map(x => s" ScalaReflection.convertToScala(children($x).eval(input), children($x).dataType)").reduce(_ + ",\n " + _)
s""" s"""
case $x => case $x =>
function.asInstanceOf[($anys) => Any]( function.asInstanceOf[($anys) => Any](
$evals) $evals)
""" """
} }.foreach(println)
*/ */
// scalastyle:off
override def eval(input: Row): Any = { override def eval(input: Row): Any = {
val result = children.size match { val result = children.size match {
case 0 => function.asInstanceOf[() => Any]() case 0 => function.asInstanceOf[() => Any]()
case 1 => function.asInstanceOf[(Any) => Any](children(0).eval(input)) case 1 =>
function.asInstanceOf[(Any) => Any](
ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType))
case 2 => case 2 =>
function.asInstanceOf[(Any, Any) => Any]( function.asInstanceOf[(Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input)) ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType))
case 3 => case 3 =>
function.asInstanceOf[(Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input)) ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType))
case 4 => case 4 =>
function.asInstanceOf[(Any, Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input), ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
children(3).eval(input)) ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType))
case 5 => case 5 =>
function.asInstanceOf[(Any, Any, Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input), ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
children(3).eval(input), ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
children(4).eval(input)) ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType))
case 6 => case 6 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input), ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
children(3).eval(input), ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
children(4).eval(input), ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
children(5).eval(input)) ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType))
case 7 => case 7 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input), ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
children(3).eval(input), ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
children(4).eval(input), ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
children(5).eval(input), ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
children(6).eval(input)) ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType))
case 8 => case 8 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input), ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
children(3).eval(input), ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
children(4).eval(input), ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
children(5).eval(input), ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
children(6).eval(input), ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
children(7).eval(input)) ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType))
case 9 => case 9 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input), ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
children(3).eval(input), ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
children(4).eval(input), ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
children(5).eval(input), ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
children(6).eval(input), ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
children(7).eval(input), ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
children(8).eval(input)) ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType))
case 10 => case 10 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input), ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
children(3).eval(input), ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
children(4).eval(input), ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
children(5).eval(input), ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
children(6).eval(input), ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
children(7).eval(input), ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
children(8).eval(input), ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
children(9).eval(input)) ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType))
case 11 => case 11 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input), ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
children(3).eval(input), ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
children(4).eval(input), ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
children(5).eval(input), ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
children(6).eval(input), ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
children(7).eval(input), ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
children(8).eval(input), ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
children(9).eval(input), ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
children(10).eval(input)) ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType))
case 12 => case 12 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input), ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
children(3).eval(input), ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
children(4).eval(input), ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
children(5).eval(input), ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
children(6).eval(input), ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
children(7).eval(input), ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
children(8).eval(input), ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
children(9).eval(input), ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
children(10).eval(input), ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
children(11).eval(input)) ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType))
case 13 => case 13 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input), ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
children(3).eval(input), ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
children(4).eval(input), ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
children(5).eval(input), ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
children(6).eval(input), ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
children(7).eval(input), ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
children(8).eval(input), ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
children(9).eval(input), ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
children(10).eval(input), ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
children(11).eval(input), ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
children(12).eval(input)) ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType))
case 14 => case 14 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input), ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
children(3).eval(input), ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
children(4).eval(input), ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
children(5).eval(input), ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
children(6).eval(input), ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
children(7).eval(input), ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
children(8).eval(input), ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
children(9).eval(input), ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
children(10).eval(input), ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
children(11).eval(input), ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
children(12).eval(input), ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType),
children(13).eval(input)) ScalaReflection.convertToScala(children(13).eval(input), children(13).dataType))
case 15 => case 15 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input), ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
children(3).eval(input), ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
children(4).eval(input), ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
children(5).eval(input), ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
children(6).eval(input), ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
children(7).eval(input), ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
children(8).eval(input), ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
children(9).eval(input), ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
children(10).eval(input), ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
children(11).eval(input), ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
children(12).eval(input), ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType),
children(13).eval(input), ScalaReflection.convertToScala(children(13).eval(input), children(13).dataType),
children(14).eval(input)) ScalaReflection.convertToScala(children(14).eval(input), children(14).dataType))
case 16 => case 16 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input), ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
children(3).eval(input), ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
children(4).eval(input), ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
children(5).eval(input), ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
children(6).eval(input), ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
children(7).eval(input), ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
children(8).eval(input), ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
children(9).eval(input), ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
children(10).eval(input), ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
children(11).eval(input), ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
children(12).eval(input), ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType),
children(13).eval(input), ScalaReflection.convertToScala(children(13).eval(input), children(13).dataType),
children(14).eval(input), ScalaReflection.convertToScala(children(14).eval(input), children(14).dataType),
children(15).eval(input)) ScalaReflection.convertToScala(children(15).eval(input), children(15).dataType))
case 17 => case 17 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input), ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
children(3).eval(input), ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
children(4).eval(input), ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
children(5).eval(input), ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
children(6).eval(input), ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
children(7).eval(input), ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
children(8).eval(input), ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
children(9).eval(input), ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
children(10).eval(input), ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
children(11).eval(input), ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
children(12).eval(input), ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType),
children(13).eval(input), ScalaReflection.convertToScala(children(13).eval(input), children(13).dataType),
children(14).eval(input), ScalaReflection.convertToScala(children(14).eval(input), children(14).dataType),
children(15).eval(input), ScalaReflection.convertToScala(children(15).eval(input), children(15).dataType),
children(16).eval(input)) ScalaReflection.convertToScala(children(16).eval(input), children(16).dataType))
case 18 => case 18 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input), ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
children(3).eval(input), ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
children(4).eval(input), ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
children(5).eval(input), ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
children(6).eval(input), ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
children(7).eval(input), ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
children(8).eval(input), ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
children(9).eval(input), ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
children(10).eval(input), ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
children(11).eval(input), ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
children(12).eval(input), ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType),
children(13).eval(input), ScalaReflection.convertToScala(children(13).eval(input), children(13).dataType),
children(14).eval(input), ScalaReflection.convertToScala(children(14).eval(input), children(14).dataType),
children(15).eval(input), ScalaReflection.convertToScala(children(15).eval(input), children(15).dataType),
children(16).eval(input), ScalaReflection.convertToScala(children(16).eval(input), children(16).dataType),
children(17).eval(input)) ScalaReflection.convertToScala(children(17).eval(input), children(17).dataType))
case 19 => case 19 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input), ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
children(3).eval(input), ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
children(4).eval(input), ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
children(5).eval(input), ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
children(6).eval(input), ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
children(7).eval(input), ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
children(8).eval(input), ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
children(9).eval(input), ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
children(10).eval(input), ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
children(11).eval(input), ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
children(12).eval(input), ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType),
children(13).eval(input), ScalaReflection.convertToScala(children(13).eval(input), children(13).dataType),
children(14).eval(input), ScalaReflection.convertToScala(children(14).eval(input), children(14).dataType),
children(15).eval(input), ScalaReflection.convertToScala(children(15).eval(input), children(15).dataType),
children(16).eval(input), ScalaReflection.convertToScala(children(16).eval(input), children(16).dataType),
children(17).eval(input), ScalaReflection.convertToScala(children(17).eval(input), children(17).dataType),
children(18).eval(input)) ScalaReflection.convertToScala(children(18).eval(input), children(18).dataType))
case 20 => case 20 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input), ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
children(3).eval(input), ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
children(4).eval(input), ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
children(5).eval(input), ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
children(6).eval(input), ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
children(7).eval(input), ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
children(8).eval(input), ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
children(9).eval(input), ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
children(10).eval(input), ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
children(11).eval(input), ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
children(12).eval(input), ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType),
children(13).eval(input), ScalaReflection.convertToScala(children(13).eval(input), children(13).dataType),
children(14).eval(input), ScalaReflection.convertToScala(children(14).eval(input), children(14).dataType),
children(15).eval(input), ScalaReflection.convertToScala(children(15).eval(input), children(15).dataType),
children(16).eval(input), ScalaReflection.convertToScala(children(16).eval(input), children(16).dataType),
children(17).eval(input), ScalaReflection.convertToScala(children(17).eval(input), children(17).dataType),
children(18).eval(input), ScalaReflection.convertToScala(children(18).eval(input), children(18).dataType),
children(19).eval(input)) ScalaReflection.convertToScala(children(19).eval(input), children(19).dataType))
case 21 => case 21 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input), ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
children(3).eval(input), ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
children(4).eval(input), ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
children(5).eval(input), ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
children(6).eval(input), ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
children(7).eval(input), ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
children(8).eval(input), ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
children(9).eval(input), ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
children(10).eval(input), ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
children(11).eval(input), ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
children(12).eval(input), ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType),
children(13).eval(input), ScalaReflection.convertToScala(children(13).eval(input), children(13).dataType),
children(14).eval(input), ScalaReflection.convertToScala(children(14).eval(input), children(14).dataType),
children(15).eval(input), ScalaReflection.convertToScala(children(15).eval(input), children(15).dataType),
children(16).eval(input), ScalaReflection.convertToScala(children(16).eval(input), children(16).dataType),
children(17).eval(input), ScalaReflection.convertToScala(children(17).eval(input), children(17).dataType),
children(18).eval(input), ScalaReflection.convertToScala(children(18).eval(input), children(18).dataType),
children(19).eval(input), ScalaReflection.convertToScala(children(19).eval(input), children(19).dataType),
children(20).eval(input)) ScalaReflection.convertToScala(children(20).eval(input), children(20).dataType))
case 22 => case 22 =>
function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any]( function.asInstanceOf[(Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any) => Any](
children(0).eval(input), ScalaReflection.convertToScala(children(0).eval(input), children(0).dataType),
children(1).eval(input), ScalaReflection.convertToScala(children(1).eval(input), children(1).dataType),
children(2).eval(input), ScalaReflection.convertToScala(children(2).eval(input), children(2).dataType),
children(3).eval(input), ScalaReflection.convertToScala(children(3).eval(input), children(3).dataType),
children(4).eval(input), ScalaReflection.convertToScala(children(4).eval(input), children(4).dataType),
children(5).eval(input), ScalaReflection.convertToScala(children(5).eval(input), children(5).dataType),
children(6).eval(input), ScalaReflection.convertToScala(children(6).eval(input), children(6).dataType),
children(7).eval(input), ScalaReflection.convertToScala(children(7).eval(input), children(7).dataType),
children(8).eval(input), ScalaReflection.convertToScala(children(8).eval(input), children(8).dataType),
children(9).eval(input), ScalaReflection.convertToScala(children(9).eval(input), children(9).dataType),
children(10).eval(input), ScalaReflection.convertToScala(children(10).eval(input), children(10).dataType),
children(11).eval(input), ScalaReflection.convertToScala(children(11).eval(input), children(11).dataType),
children(12).eval(input), ScalaReflection.convertToScala(children(12).eval(input), children(12).dataType),
children(13).eval(input), ScalaReflection.convertToScala(children(13).eval(input), children(13).dataType),
children(14).eval(input), ScalaReflection.convertToScala(children(14).eval(input), children(14).dataType),
children(15).eval(input), ScalaReflection.convertToScala(children(15).eval(input), children(15).dataType),
children(16).eval(input), ScalaReflection.convertToScala(children(16).eval(input), children(16).dataType),
children(17).eval(input), ScalaReflection.convertToScala(children(17).eval(input), children(17).dataType),
children(18).eval(input), ScalaReflection.convertToScala(children(18).eval(input), children(18).dataType),
children(19).eval(input), ScalaReflection.convertToScala(children(19).eval(input), children(19).dataType),
children(20).eval(input), ScalaReflection.convertToScala(children(20).eval(input), children(20).dataType),
children(21).eval(input)) ScalaReflection.convertToScala(children(21).eval(input), children(21).dataType))
} }
// scalastyle:on // scalastyle:on
......
...@@ -60,13 +60,13 @@ private[sql] class MyDenseVectorUDT extends UserDefinedType[MyDenseVector] { ...@@ -60,13 +60,13 @@ private[sql] class MyDenseVectorUDT extends UserDefinedType[MyDenseVector] {
} }
class UserDefinedTypeSuite extends QueryTest { class UserDefinedTypeSuite extends QueryTest {
val points = Seq(
MyLabeledPoint(1.0, new MyDenseVector(Array(0.1, 1.0))),
MyLabeledPoint(0.0, new MyDenseVector(Array(0.2, 2.0))))
val pointsRDD: RDD[MyLabeledPoint] = sparkContext.parallelize(points)
test("register user type: MyDenseVector for MyLabeledPoint") {
val points = Seq(
MyLabeledPoint(1.0, new MyDenseVector(Array(0.1, 1.0))),
MyLabeledPoint(0.0, new MyDenseVector(Array(0.2, 2.0))))
val pointsRDD: RDD[MyLabeledPoint] = sparkContext.parallelize(points)
test("register user type: MyDenseVector for MyLabeledPoint") {
val labels: RDD[Double] = pointsRDD.select('label).map { case Row(v: Double) => v } val labels: RDD[Double] = pointsRDD.select('label).map { case Row(v: Double) => v }
val labelsArrays: Array[Double] = labels.collect() val labelsArrays: Array[Double] = labels.collect()
assert(labelsArrays.size === 2) assert(labelsArrays.size === 2)
...@@ -80,4 +80,12 @@ class UserDefinedTypeSuite extends QueryTest { ...@@ -80,4 +80,12 @@ class UserDefinedTypeSuite extends QueryTest {
assert(featuresArrays.contains(new MyDenseVector(Array(0.1, 1.0)))) assert(featuresArrays.contains(new MyDenseVector(Array(0.1, 1.0))))
assert(featuresArrays.contains(new MyDenseVector(Array(0.2, 2.0)))) assert(featuresArrays.contains(new MyDenseVector(Array(0.2, 2.0))))
} }
test("UDTs and UDFs") {
registerFunction("testType", (d: MyDenseVector) => d.isInstanceOf[MyDenseVector])
pointsRDD.registerTempTable("points")
checkAnswer(
sql("SELECT testType(features) from points"),
Seq(Row(true), Row(true)))
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment