aboutsummaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
Diffstat (limited to 'sql')
-rw-r--r--sql/core/src/main/scala/org/apache/spark/sql/api/r/SQLUtils.scala14
1 files changed, 10 insertions, 4 deletions
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/api/r/SQLUtils.scala b/sql/core/src/main/scala/org/apache/spark/sql/api/r/SQLUtils.scala
index 7f3defec3d..d4b834adb6 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/api/r/SQLUtils.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/api/r/SQLUtils.scala
@@ -26,6 +26,8 @@ import org.apache.spark.sql.catalyst.expressions.{Alias, Expression, NamedExpres
import org.apache.spark.sql.types._
import org.apache.spark.sql.{Column, DataFrame, GroupedData, Row, SQLContext, SaveMode}
+import scala.util.matching.Regex
+
private[r] object SQLUtils {
def createSQLContext(jsc: JavaSparkContext): SQLContext = {
new SQLContext(jsc)
@@ -35,14 +37,15 @@ private[r] object SQLUtils {
new JavaSparkContext(sqlCtx.sparkContext)
}
- def toSeq[T](arr: Array[T]): Seq[T] = {
- arr.toSeq
- }
-
def createStructType(fields : Seq[StructField]): StructType = {
StructType(fields)
}
+ // Support using regex in string interpolation
+ private[this] implicit class RegexContext(sc: StringContext) {
+ def r: Regex = new Regex(sc.parts.mkString, sc.parts.tail.map(_ => "x"): _*)
+ }
+
def getSQLDataType(dataType: String): DataType = {
dataType match {
case "byte" => org.apache.spark.sql.types.ByteType
@@ -58,6 +61,9 @@ private[r] object SQLUtils {
case "boolean" => org.apache.spark.sql.types.BooleanType
case "timestamp" => org.apache.spark.sql.types.TimestampType
case "date" => org.apache.spark.sql.types.DateType
+ case r"\Aarray<(.*)${elemType}>\Z" => {
+ org.apache.spark.sql.types.ArrayType(getSQLDataType(elemType))
+ }
case _ => throw new IllegalArgumentException(s"Invaid type $dataType")
}
}