aboutsummaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorShivaram Venkataraman <shivaram@cs.berkeley.edu>2015-05-08 18:29:57 -0700
committerShivaram Venkataraman <shivaram@cs.berkeley.edu>2015-05-08 18:29:57 -0700
commit0a901dd3a1eb3fd459d45b771ce4ad2cfef2a944 (patch)
treec7b2479550c1ebadca8f8b5f4caf6f63db0f57e1 /sql
parentb6c797b08cbd08d7aab59ad0106af0f5f41ef186 (diff)
downloadspark-0a901dd3a1eb3fd459d45b771ce4ad2cfef2a944.tar.gz
spark-0a901dd3a1eb3fd459d45b771ce4ad2cfef2a944.tar.bz2
spark-0a901dd3a1eb3fd459d45b771ce4ad2cfef2a944.zip
[SPARK-7231] [SPARKR] Changes to make SparkR DataFrame dplyr friendly.
Changes include 1. Rename sortDF to arrange 2. Add new aliases `group_by` and `sample_frac`, `summarize` 3. Add more user friendly column addition (mutate), rename 4. Support mean as an alias for avg in Scala and also support n_distinct, n as in dplyr Using these changes we can pretty much run the examples as described in http://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html with the same syntax The only thing missing in SparkR is auto resolving column names when used in an expression i.e. making something like `select(flights, delay)` works in dply but we right now need `select(flights, flights$delay)` or `select(flights, "delay")`. But this is a complicated change and I'll file a new issue for it cc sun-rui rxin Author: Shivaram Venkataraman <shivaram@cs.berkeley.edu> Closes #6005 from shivaram/sparkr-df-api and squashes the following commits: 5e0716a [Shivaram Venkataraman] Fix some roxygen bugs 1254953 [Shivaram Venkataraman] Merge branch 'master' of https://github.com/apache/spark into sparkr-df-api 0521149 [Shivaram Venkataraman] Changes to make SparkR DataFrame dplyr friendly. Changes include 1. Rename sortDF to arrange 2. Add new aliases `group_by` and `sample_frac`, `summarize` 3. Add more user friendly column addition (mutate), rename 4. Support mean as an alias for avg in Scala and also support n_distinct, n as in dplyr
Diffstat (limited to 'sql')
-rw-r--r--sql/core/src/main/scala/org/apache/spark/sql/functions.scala16
-rw-r--r--sql/core/src/test/scala/org/apache/spark/sql/DataFrameSuite.scala5
2 files changed, 21 insertions, 0 deletions
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/functions.scala b/sql/core/src/main/scala/org/apache/spark/sql/functions.scala
index 1728b0b8c9..fae4bd0fd2 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/functions.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/functions.scala
@@ -247,6 +247,22 @@ object functions {
def last(columnName: String): Column = last(Column(columnName))
/**
+ * Aggregate function: returns the average of the values in a group.
+ * Alias for avg.
+ *
+ * @group agg_funcs
+ */
+ def mean(e: Column): Column = avg(e)
+
+ /**
+ * Aggregate function: returns the average of the values in a group.
+ * Alias for avg.
+ *
+ * @group agg_funcs
+ */
+ def mean(columnName: String): Column = avg(columnName)
+
+ /**
* Aggregate function: returns the minimum value of the expression in a group.
*
* @group agg_funcs
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 d2ca8dccae..cf590cbd52 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
@@ -308,6 +308,11 @@ class DataFrameSuite extends QueryTest {
testData2.agg(avg('a)),
Row(2.0))
+ // Also check mean
+ checkAnswer(
+ testData2.agg(mean('a)),
+ Row(2.0))
+
checkAnswer(
testData2.agg(avg('a), sumDistinct('a)), // non-partial
Row(2.0, 6.0) :: Nil)