From d8396c0e3d5bdf6983ad20af202c0ab0767d48dd Mon Sep 17 00:00:00 2001 From: animesh Date: Mon, 1 Jun 2015 15:58:44 +0530 Subject: [PATCH] SPARK-7980: created function range(end:Long) --- .../scala/org/apache/spark/sql/SQLContext.scala | 15 +++++++++++++++ .../org/apache/spark/sql/DataFrameSuite.scala | 11 +++++++++++ 2 files changed, 26 insertions(+) diff --git a/sql/core/src/main/scala/org/apache/spark/sql/SQLContext.scala b/sql/core/src/main/scala/org/apache/spark/sql/SQLContext.scala index 7384b24c50b16..481f4c53bba7c 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/SQLContext.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/SQLContext.scala @@ -698,6 +698,21 @@ class SQLContext(@transient val sparkContext: SparkContext) StructType(StructField("id", LongType, nullable = false) :: Nil)) } + /** + * :: Experimental :: + * Creates a [[DataFrame]] with a single [[LongType]] column named `id`, containing elements + * in an range from 0 to `end`(exclusive) with step value 1. + * + * @since 1.4.0 + * @group dataframe + */ + @Experimental + def range(end: Long): DataFrame = { + createDataFrame( + sparkContext.range(0, end).map(Row(_)), + StructType(StructField("id", LongType, nullable = false) :: Nil)) + } + /** * :: Experimental :: * Creates a [[DataFrame]] with a single [[LongType]] column named `id`, containing elements diff --git a/sql/core/src/test/scala/org/apache/spark/sql/DataFrameSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/DataFrameSuite.scala index a4fd1058afce5..592ecc27eaa7b 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/DataFrameSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/DataFrameSuite.scala @@ -576,5 +576,16 @@ class DataFrameSuite extends QueryTest { val res9 = TestSQLContext.range(Long.MaxValue, Long.MinValue, Long.MinValue, 100).select("id") assert(res9.count == 2) assert(res9.agg(sum("id")).as("sumid").collect() === Seq(Row(Long.MaxValue - 1))) + + //only end provided as argument + val res10 = TestSQLContext.range(-10).select("id") + assert(res10.count == 0) + + val res11 = TestSQLContext.range(10).select("id") + assert(res11.count == 10) + assert(res11.agg(sum("id")).as("sumid").collect() === Seq(Row(45))) + + val res12 = TestSQLContext.range(0).select("id") + assert(res12.count == 0) } }