You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@spark.apache.org by jkbradley <gi...@git.apache.org> on 2014/11/04 20:16:23 UTC
[GitHub] spark pull request: [mllib] GradientBoosting API cleanup and examp...
GitHub user jkbradley opened a pull request:
https://github.com/apache/spark/pull/3094
[mllib] GradientBoosting API cleanup and examples in Scala, Java
### Summary
* Made it easier to construct default Strategy and BoostingStrategy and to set parameters using simple types.
* Added Scala and Java examples for GradientBoostedTrees
* small cleanups and fixes
### Details
GradientBoosting bug fixes (“bug” = bad default options)
* Force boostingStrategy.weakLearnerParams.algo = Regression
* Force boostingStrategy.weakLearnerParams.impurity = impurity.Variance
* Only persist data if not yet persisted (since it causes an error if persisted twice)
BoostingStrategy
* numEstimators: renamed to numIterations
* removed subsamplingRate (duplicated by Strategy)
* removed categoricalFeaturesInfo since it belongs with the weak learner params (since boosting can be oblivious to feature type)
* Changed algo to var (not val) and added @BeanProperty, with overload taking String argument
* Added assertValid() method
* Updated defaultParams() method and eliminated defaultWeakLearnerParams() since that belongs in Strategy
Strategy (for DecisionTree)
* Changed algo to var (not val) and added @BeanProperty, with overload taking String argument
* Added setCategoricalFeaturesInfo method taking Java Map.
* Cleaned up assertValid
* Changed val’s to def’s since parameters can now be changed.
CC: @manishamde @mengxr @codedeft
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/jkbradley/spark gbt-api
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/spark/pull/3094.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #3094
----
commit e9b841097e08ce3602acfb752bec0dd8edd1e43e
Author: Joseph K. Bradley <jo...@databricks.com>
Date: 2014-11-04T18:55:05Z
Summary of changes
* Made it easier to construct default Strategy and BoostingStrategy and to set parameters using simple types.
* Added Scala and Java examples for GradientBoostedTrees
* small cleanups and fixes
Details
GradientBoosting bug fixes (“bug” = bad default options)
* Force boostingStrategy.weakLearnerParams.algo = Regression
* Force boostingStrategy.weakLearnerParams.impurity = impurity.Variance
* Only persist data if not yet persisted (since it causes an error if persisted twice)
BoostingStrategy
* numEstimators: renamed to numIterations
* removed subsamplingRate (duplicated by Strategy)
* removed categoricalFeaturesInfo since it belongs with the weak learner params (since boosting can be oblivious to feature type)
* Changed algo to var (not val) and added @BeanProperty, with overload taking String argument
* Added assertValid() method
* Updated defaultParams() method and eliminated defaultWeakLearnerParams() since that belongs in Strategy
Strategy (for DecisionTree)
* Changed algo to var (not val) and added @BeanProperty, with overload taking String argument
* Added setCategoricalFeaturesInfo method taking Java Map.
* Cleaned up assertValid
* Changed val’s to def’s since parameters can now be changed.
----
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [SPARK-4197] [mllib] GradientBoosting API clea...
Posted by jkbradley <gi...@git.apache.org>.
Github user jkbradley commented on a diff in the pull request:
https://github.com/apache/spark/pull/3094#discussion_r19903935
--- Diff: mllib/src/main/scala/org/apache/spark/mllib/tree/configuration/Strategy.scala ---
@@ -70,7 +70,7 @@ import org.apache.spark.mllib.tree.configuration.QuantileStrategy._
*/
@Experimental
class Strategy (
--- End diff --
This has been a long-standing problem, with several iterations of adding new parameters. I agree with your suggested approach, but had stuck with the old one for consistency. I'm OK with changing the API. Should we now?
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [mllib] GradientBoosting API cleanup and examp...
Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the pull request:
https://github.com/apache/spark/pull/3094#issuecomment-61699690
[Test build #22889 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/22889/consoleFull) for PR 3094 at commit [`52013d5`](https://github.com/apache/spark/commit/52013d508ed49c1f391068ad30ba1e42fec3134f).
* This patch **fails Scala style tests**.
* This patch merges cleanly.
* This patch adds the following public classes _(experimental)_:
* `public final class JavaGradientBoostedTrees `
* ` case class Params(`
* `class RDDFunctions[T: ClassTag](self: RDD[T]) extends Serializable `
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [mllib] GradientBoosting API cleanup and examp...
Posted by jkbradley <gi...@git.apache.org>.
Github user jkbradley commented on the pull request:
https://github.com/apache/spark/pull/3094#issuecomment-61697174
By the way, I had made a JIRA for this, but the website seems down, so I can't look up the JIRA number. I'll tag it later.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [SPARK-4197] [mllib] GradientBoosting API clea...
Posted by manishamde <gi...@git.apache.org>.
Github user manishamde commented on the pull request:
https://github.com/apache/spark/pull/3094#issuecomment-61849672
@codedeft Thanks for creating the JIRA and informing us.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [SPARK-4197] [mllib] GradientBoosting API clea...
Posted by mengxr <gi...@git.apache.org>.
Github user mengxr commented on the pull request:
https://github.com/apache/spark/pull/3094#issuecomment-61857985
LGTM. I've merged this into master and branch-1.2. Thanks! (We need to think about binary compatibility when we remove the @Experimental tag.)
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [mllib] GradientBoosting API cleanup and examp...
Posted by manishamde <gi...@git.apache.org>.
Github user manishamde commented on the pull request:
https://github.com/apache/spark/pull/3094#issuecomment-61721420
@jkbradley Thanks! I will take a look and get back.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [SPARK-4197] [mllib] GradientBoosting API clea...
Posted by asfgit <gi...@git.apache.org>.
Github user asfgit closed the pull request at:
https://github.com/apache/spark/pull/3094
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [SPARK-4197] [mllib] GradientBoosting API clea...
Posted by jkbradley <gi...@git.apache.org>.
Github user jkbradley commented on the pull request:
https://github.com/apache/spark/pull/3094#issuecomment-61763252
@manishamde Your comment pretty much covers it, I believe. I hope these optimizations/parameters can remain within the same algorithm, but we should discuss it if any merit new APIs or separate implementations.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [mllib] GradientBoosting API cleanup and examp...
Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the pull request:
https://github.com/apache/spark/pull/3094#issuecomment-61734105
[Test build #22900 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/22900/consoleFull) for PR 3094 at commit [`7a27e22`](https://github.com/apache/spark/commit/7a27e220fcd539c60e75d42671234f39b9c820fe).
* This patch **passes all tests**.
* This patch merges cleanly.
* This patch adds the following public classes _(experimental)_:
* `public final class JavaGradientBoostedTrees `
* ` case class Params(`
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [mllib] GradientBoosting API cleanup and examp...
Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the pull request:
https://github.com/apache/spark/pull/3094#issuecomment-61697896
Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/22888/
Test FAILed.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [mllib] GradientBoosting API cleanup and examp...
Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the pull request:
https://github.com/apache/spark/pull/3094#issuecomment-61697696
[Test build #22888 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/22888/consoleFull) for PR 3094 at commit [`e9b8410`](https://github.com/apache/spark/commit/e9b841097e08ce3602acfb752bec0dd8edd1e43e).
* This patch merges cleanly.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [SPARK-4197] [mllib] GradientBoosting API clea...
Posted by jkbradley <gi...@git.apache.org>.
Github user jkbradley commented on the pull request:
https://github.com/apache/spark/pull/3094#issuecomment-61764340
@codedeft The long-foretold new ML API will help with these things. A WIP PR with the Pipeline concept is out now, but a remake of the internal class hierarchy is still being designed. The class hierarchy in particular should make a lot of these things easier (e.g., separating labels and features).
You can see the Pipeline PR here: [https://github.com/apache/spark/pull/3099]
The class hierarchy JIRA is here [https://issues.apache.org/jira/browse/SPARK-3702]. The design doc is a bit out of date, and I've been working on a branch of the Pipeline PR. It will take a bit of time for me to merge the new Pipeline changes, but I'll ping you when I have a branch ready. Basically, I'm trying to look ahead and think of general use cases and algorithms (mainly for prediction) to figure out good abstractions, while minimizing burden on developers. Feedback would be awesome (though it might make sense to wait until I clean it up this week).
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [SPARK-4197] [mllib] GradientBoosting API clea...
Posted by codedeft <gi...@git.apache.org>.
Github user codedeft commented on the pull request:
https://github.com/apache/spark/pull/3094#issuecomment-61769695
@jkbradley @manishamde @mengxr
This is probably not the right place to communicate this. But FYI, I created a separate story for refining tree predictions for GB.
https://issues.apache.org/jira/browse/SPARK-4240
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [mllib] GradientBoosting API cleanup and examp...
Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the pull request:
https://github.com/apache/spark/pull/3094#issuecomment-61722562
[Test build #22900 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/22900/consoleFull) for PR 3094 at commit [`7a27e22`](https://github.com/apache/spark/commit/7a27e220fcd539c60e75d42671234f39b9c820fe).
* This patch merges cleanly.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [mllib] GradientBoosting API cleanup and examp...
Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the pull request:
https://github.com/apache/spark/pull/3094#issuecomment-61699694
Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/22889/
Test FAILed.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [SPARK-4197] [mllib] GradientBoosting API clea...
Posted by mengxr <gi...@git.apache.org>.
Github user mengxr commented on a diff in the pull request:
https://github.com/apache/spark/pull/3094#discussion_r19857572
--- Diff: mllib/src/main/scala/org/apache/spark/mllib/tree/configuration/Strategy.scala ---
@@ -70,7 +70,7 @@ import org.apache.spark.mllib.tree.configuration.QuantileStrategy._
*/
@Experimental
class Strategy (
--- End diff --
Note on binary compatibility: If we add new parameters later, it will change the constructor signature. Then we need to provide auxiliary constructors to maintain binary compatibility, which makes the code hard to maintain in the long run. We can hide constructors with parameters and only expose the one without any parameters. Then check the required parameters at runtime by adding `def validate()`.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [SPARK-4197] [mllib] GradientBoosting API clea...
Posted by codedeft <gi...@git.apache.org>.
Github user codedeft commented on the pull request:
https://github.com/apache/spark/pull/3094#issuecomment-61762230
Sounds good. I'll create a story for this.
In addition to using internal formats for more efficiency, perhaps there are also some minor things such as separating label as a different RDD from features so that label can be updated while features stay the same.
Maybe all these are under the same MLLib API optimization umbrella.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [mllib] GradientBoosting API cleanup and examp...
Posted by manishamde <gi...@git.apache.org>.
Github user manishamde commented on the pull request:
https://github.com/apache/spark/pull/3094#issuecomment-61756916
@codedeft Not yet. I was planning to but forgot to do so. Feel free to create one or I can create it if you prefer.
You are correct. We need to add (possibly approximate) aggregations for distributed median, etc.
Another major task is to move to the new MLlib API once it's ready and add support for conversion/prediction using internal formats.
Did I miss out on any other optimizations?
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [mllib] GradientBoosting API cleanup and examp...
Posted by codedeft <gi...@git.apache.org>.
Github user codedeft commented on the pull request:
https://github.com/apache/spark/pull/3094#issuecomment-61753980
@jkbradley @manishamde Is there a story for TreeBoost improvement for Gradient Boosting? TreeBoosting basically improves the gradient estimation at each iteration by re-calculating tree node predictions to minimize the loss values.
This can be done through an additional aggregation step after training each tree. To be efficient, it'll probably have to be added after optimizations on GB.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [mllib] GradientBoosting API cleanup and examp...
Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the pull request:
https://github.com/apache/spark/pull/3094#issuecomment-61734115
Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/22900/
Test PASSed.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [mllib] GradientBoosting API cleanup and examp...
Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the pull request:
https://github.com/apache/spark/pull/3094#issuecomment-61699352
[Test build #22889 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/22889/consoleFull) for PR 3094 at commit [`52013d5`](https://github.com/apache/spark/commit/52013d508ed49c1f391068ad30ba1e42fec3134f).
* This patch merges cleanly.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org
[GitHub] spark pull request: [mllib] GradientBoosting API cleanup and examp...
Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the pull request:
https://github.com/apache/spark/pull/3094#issuecomment-61697890
[Test build #22888 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/22888/consoleFull) for PR 3094 at commit [`e9b8410`](https://github.com/apache/spark/commit/e9b841097e08ce3602acfb752bec0dd8edd1e43e).
* This patch **fails Scala style tests**.
* This patch merges cleanly.
* This patch adds the following public classes _(experimental)_:
* `public final class JavaGradientBoostedTrees `
* ` case class Params(`
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org