You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@spark.apache.org by yu-iskw <gi...@git.apache.org> on 2015/11/04 17:32:40 UTC

[GitHub] spark pull request: [SPARK-10028][MLlib][Python] Add Python API fo...

GitHub user yu-iskw opened a pull request:

    https://github.com/apache/spark/pull/9469

    [SPARK-10028][MLlib][Python] Add Python API for PrefixSpan

    

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/yu-iskw/spark SPARK-10028

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/spark/pull/9469.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 #9469
    
----
commit 6db1db90779b40d8944548c83a01085a0a7208f8
Author: Yu ISHIKAWA <yu...@gmail.com>
Date:   2015-11-04T08:24:13Z

    [SPARK-10028][MLlib][Python] Add Python API for PrefixSpan

----


---
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-10028][MLlib][Python] Add Python API fo...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the pull request:

    https://github.com/apache/spark/pull/9469#issuecomment-153791277
  
    Merged build started.


---
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-10028][MLlib][Python] Add Python API fo...

Posted by mengxr <gi...@git.apache.org>.
Github user mengxr commented on the pull request:

    https://github.com/apache/spark/pull/9469#issuecomment-153787951
  
    LGTM except two minor issues.


---
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-10028][MLlib][Python] Add Python API fo...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the pull request:

    https://github.com/apache/spark/pull/9469#issuecomment-153792784
  
    **[Test build #45024 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/45024/consoleFull)** for PR 9469 at commit [`ceb4a7f`](https://github.com/apache/spark/commit/ceb4a7f35605dba9dc4bd9d199d31c89c8bb9c10).


---
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-10028][MLlib][Python] Add Python API fo...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the pull request:

    https://github.com/apache/spark/pull/9469#issuecomment-153797654
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/45022/
    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: [SPARK-10028][MLlib][Python] Add Python API fo...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the pull request:

    https://github.com/apache/spark/pull/9469#issuecomment-153806045
  
    **[Test build #45024 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/45024/consoleFull)** for PR 9469 at commit [`ceb4a7f`](https://github.com/apache/spark/commit/ceb4a7f35605dba9dc4bd9d199d31c89c8bb9c10).
     * This patch passes all tests.
     * This patch merges cleanly.
     * This patch adds the following public classes _(experimental)_:\n  * `class PrefixSpanModel(JavaModelWrapper):`\n  * `class PrefixSpan(object):`\n  * `    class FreqSequence(namedtuple(\"FreqSequence\", [\"sequence\", \"freq\"])):`\n


---
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-10028][MLlib][Python] Add Python API fo...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the pull request:

    https://github.com/apache/spark/pull/9469#issuecomment-153797446
  
    **[Test build #45022 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/45022/consoleFull)** for PR 9469 at commit [`6db1db9`](https://github.com/apache/spark/commit/6db1db90779b40d8944548c83a01085a0a7208f8).
     * This patch passes all tests.
     * This patch merges cleanly.
     * This patch adds the following public classes _(experimental)_:\n  * `class PrefixSpanModel(JavaModelWrapper):`\n  * `class PrefixSpan(object):`\n  * `    class FreqSequences(namedtuple(\"FreqSequences\", [\"sequence\", \"freq\"])):`\n


---
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-10028][MLlib][Python] Add Python API fo...

Posted by mengxr <gi...@git.apache.org>.
Github user mengxr commented on the pull request:

    https://github.com/apache/spark/pull/9469#issuecomment-153903572
  
    Merged into master. Thanks!


---
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-10028][MLlib][Python] Add Python API fo...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the pull request:

    https://github.com/apache/spark/pull/9469#issuecomment-153806268
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/45024/
    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: [SPARK-10028][MLlib][Python] Add Python API fo...

Posted by mengxr <gi...@git.apache.org>.
Github user mengxr commented on a diff in the pull request:

    https://github.com/apache/spark/pull/9469#discussion_r43904647
  
    --- Diff: python/pyspark/mllib/fpm.py ---
    @@ -85,6 +85,72 @@ class FreqItemset(namedtuple("FreqItemset", ["items", "freq"])):
             """
     
     
    +@inherit_doc
    +@ignore_unicode_prefix
    +class PrefixSpanModel(JavaModelWrapper):
    +    """
    +    .. note:: Experimental
    +
    +    Model fitted by PrefixSpan
    +
    +    >>> data = [
    +    ...    [["a", "b"], ["c"]],
    +    ...    [["a"], ["c", "b"], ["a", "b"]],
    +    ...    [["a", "b"], ["e"]],
    +    ...    [["f"]]]
    +    >>> rdd = sc.parallelize(data, 2)
    +    >>> model = PrefixSpan.train(rdd)
    +    >>> sorted(model.freqSequences().collect())
    +    [FreqSequences(sequence=[[u'a']], freq=3), FreqSequences(sequence=[[u'a'], [u'a']], freq=1), ...
    +
    +    .. versionadded:: 1.6.0
    +    """
    +
    +    @since("1.6.0")
    +    def freqSequences(self):
    +        """Gets frequence sequences"""
    +        return self.call("getFreqSequences").map(lambda x: PrefixSpan.FreqSequences(x[0], x[1]))
    +
    +
    +class PrefixSpan(object):
    +    """
    +    .. note:: Experimental
    +
    +    A parallel PrefixSpan algorithm to mine frequent sequential patterns.
    +    The PrefixSpan algorithm is described in J. Pei, et al., PrefixSpan: Mining Sequential Patterns
    --- End diff --
    
    line too wide for docstring (72 chars in  PEP8)


---
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-10028][MLlib][Python] Add Python API fo...

Posted by mengxr <gi...@git.apache.org>.
Github user mengxr commented on a diff in the pull request:

    https://github.com/apache/spark/pull/9469#discussion_r43904779
  
    --- Diff: python/pyspark/mllib/fpm.py ---
    @@ -85,6 +85,72 @@ class FreqItemset(namedtuple("FreqItemset", ["items", "freq"])):
             """
     
     
    +@inherit_doc
    +@ignore_unicode_prefix
    +class PrefixSpanModel(JavaModelWrapper):
    +    """
    +    .. note:: Experimental
    +
    +    Model fitted by PrefixSpan
    +
    +    >>> data = [
    +    ...    [["a", "b"], ["c"]],
    +    ...    [["a"], ["c", "b"], ["a", "b"]],
    +    ...    [["a", "b"], ["e"]],
    +    ...    [["f"]]]
    +    >>> rdd = sc.parallelize(data, 2)
    +    >>> model = PrefixSpan.train(rdd)
    +    >>> sorted(model.freqSequences().collect())
    +    [FreqSequences(sequence=[[u'a']], freq=3), FreqSequences(sequence=[[u'a'], [u'a']], freq=1), ...
    +
    +    .. versionadded:: 1.6.0
    +    """
    +
    +    @since("1.6.0")
    +    def freqSequences(self):
    +        """Gets frequence sequences"""
    +        return self.call("getFreqSequences").map(lambda x: PrefixSpan.FreqSequences(x[0], x[1]))
    +
    +
    +class PrefixSpan(object):
    +    """
    +    .. note:: Experimental
    +
    +    A parallel PrefixSpan algorithm to mine frequent sequential patterns.
    +    The PrefixSpan algorithm is described in J. Pei, et al., PrefixSpan: Mining Sequential Patterns
    +    Efficiently by Prefix-Projected Pattern Growth ([[http://doi.org/10.1109/ICDE.2001.914830]]).
    +
    +    .. versionadded:: 1.6.0
    +    """
    +
    +    @classmethod
    +    @since("1.6.0")
    +    def train(cls, data, minSupport=0.1, maxPatternLength=10, maxLocalProjDBSize=32000000):
    +        """
    +        Finds the complete set of frequent sequential patterns in the input sequences of itemsets.
    +
    +        :param data: The input data set, each element contains a sequnce of itemsets.
    +        :param minSupport: the minimal support level of the sequential pattern, any pattern appears
    +            more than  (minSupport * size-of-the-dataset) times will be output (default: `0.1`)
    +        :param maxPatternLength: the maximal length of the sequential pattern, any pattern appears
    +            less than maxPatternLength will be output. (default: `10`)
    +        :param maxLocalProjDBSize: The maximum number of items (including delimiters used in
    +            the internal storage format) allowed in a projected database before local
    +            processing. If a projected database exceeds this size, another
    +            iteration of distributed prefix growth is run. (default: `32000000`)
    +        """
    +        model = callMLlibFunc("trainPrefixSpanModel",
    +                              data, minSupport, maxPatternLength, maxLocalProjDBSize)
    +        return PrefixSpanModel(model)
    +
    +    class FreqSequences(namedtuple("FreqSequences", ["sequence", "freq"])):
    --- End diff --
    
    `FreqSequences` -> `FreqSequence` to match Scala


---
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-10028][MLlib][Python] Add Python API fo...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the pull request:

    https://github.com/apache/spark/pull/9469#issuecomment-153797650
  
    Merged build finished. 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: [SPARK-10028][MLlib][Python] Add Python API fo...

Posted by yu-iskw <gi...@git.apache.org>.
Github user yu-iskw commented on the pull request:

    https://github.com/apache/spark/pull/9469#issuecomment-153904041
  
    Thanks for merging it!


---
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-10028][MLlib][Python] Add Python API fo...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the pull request:

    https://github.com/apache/spark/pull/9469#issuecomment-153786115
  
    **[Test build #45022 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/45022/consoleFull)** for PR 9469 at commit [`6db1db9`](https://github.com/apache/spark/commit/6db1db90779b40d8944548c83a01085a0a7208f8).


---
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-10028][MLlib][Python] Add Python API fo...

Posted by asfgit <gi...@git.apache.org>.
Github user asfgit closed the pull request at:

    https://github.com/apache/spark/pull/9469


---
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-10028][MLlib][Python] Add Python API fo...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the pull request:

    https://github.com/apache/spark/pull/9469#issuecomment-153785761
  
    Merged build started.


---
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-10028][MLlib][Python] Add Python API fo...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the pull request:

    https://github.com/apache/spark/pull/9469#issuecomment-153791248
  
     Merged build triggered.


---
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-10028][MLlib][Python] Add Python API fo...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the pull request:

    https://github.com/apache/spark/pull/9469#issuecomment-153785714
  
     Merged build triggered.


---
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-10028][MLlib][Python] Add Python API fo...

Posted by mengxr <gi...@git.apache.org>.
Github user mengxr commented on a diff in the pull request:

    https://github.com/apache/spark/pull/9469#discussion_r43904820
  
    --- Diff: python/pyspark/mllib/fpm.py ---
    @@ -85,6 +85,72 @@ class FreqItemset(namedtuple("FreqItemset", ["items", "freq"])):
             """
     
     
    +@inherit_doc
    +@ignore_unicode_prefix
    +class PrefixSpanModel(JavaModelWrapper):
    +    """
    +    .. note:: Experimental
    +
    +    Model fitted by PrefixSpan
    +
    +    >>> data = [
    +    ...    [["a", "b"], ["c"]],
    +    ...    [["a"], ["c", "b"], ["a", "b"]],
    +    ...    [["a", "b"], ["e"]],
    +    ...    [["f"]]]
    +    >>> rdd = sc.parallelize(data, 2)
    +    >>> model = PrefixSpan.train(rdd)
    +    >>> sorted(model.freqSequences().collect())
    +    [FreqSequences(sequence=[[u'a']], freq=3), FreqSequences(sequence=[[u'a'], [u'a']], freq=1), ...
    +
    +    .. versionadded:: 1.6.0
    +    """
    +
    +    @since("1.6.0")
    +    def freqSequences(self):
    +        """Gets frequence sequences"""
    +        return self.call("getFreqSequences").map(lambda x: PrefixSpan.FreqSequences(x[0], x[1]))
    +
    +
    +class PrefixSpan(object):
    +    """
    +    .. note:: Experimental
    +
    +    A parallel PrefixSpan algorithm to mine frequent sequential patterns.
    +    The PrefixSpan algorithm is described in J. Pei, et al., PrefixSpan: Mining Sequential Patterns
    +    Efficiently by Prefix-Projected Pattern Growth ([[http://doi.org/10.1109/ICDE.2001.914830]]).
    +
    +    .. versionadded:: 1.6.0
    +    """
    +
    +    @classmethod
    +    @since("1.6.0")
    +    def train(cls, data, minSupport=0.1, maxPatternLength=10, maxLocalProjDBSize=32000000):
    +        """
    +        Finds the complete set of frequent sequential patterns in the input sequences of itemsets.
    +
    +        :param data: The input data set, each element contains a sequnce of itemsets.
    +        :param minSupport: the minimal support level of the sequential pattern, any pattern appears
    +            more than  (minSupport * size-of-the-dataset) times will be output (default: `0.1`)
    +        :param maxPatternLength: the maximal length of the sequential pattern, any pattern appears
    +            less than maxPatternLength will be output. (default: `10`)
    +        :param maxLocalProjDBSize: The maximum number of items (including delimiters used in
    +            the internal storage format) allowed in a projected database before local
    +            processing. If a projected database exceeds this size, another
    +            iteration of distributed prefix growth is run. (default: `32000000`)
    +        """
    +        model = callMLlibFunc("trainPrefixSpanModel",
    +                              data, minSupport, maxPatternLength, maxLocalProjDBSize)
    +        return PrefixSpanModel(model)
    +
    +    class FreqSequences(namedtuple("FreqSequences", ["sequence", "freq"])):
    +        """
    +        Represents an (sequence, freq) tuple.
    --- End diff --
    
    `an` -> `a`


---
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-10028][MLlib][Python] Add Python API fo...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the pull request:

    https://github.com/apache/spark/pull/9469#issuecomment-153806266
  
    Merged build finished. 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