spark-instrumented-optimizer/docs
Holden Karau a36a76ac43 [SPARK-1267][SPARK-18129] Allow PySpark to be pip installed
## What changes were proposed in this pull request?

This PR aims to provide a pip installable PySpark package. This does a bunch of work to copy the jars over and package them with the Python code (to prevent challenges from trying to use different versions of the Python code with different versions of the JAR). It does not currently publish to PyPI but that is the natural follow up (SPARK-18129).

Done:
- pip installable on conda [manual tested]
- setup.py installed on a non-pip managed system (RHEL) with YARN [manual tested]
- Automated testing of this (virtualenv)
- packaging and signing with release-build*

Possible follow up work:
- release-build update to publish to PyPI (SPARK-18128)
- figure out who owns the pyspark package name on prod PyPI (is it someone with in the project or should we ask PyPI or should we choose a different name to publish with like ApachePySpark?)
- Windows support and or testing ( SPARK-18136 )
- investigate details of wheel caching and see if we can avoid cleaning the wheel cache during our test
- consider how we want to number our dev/snapshot versions

Explicitly out of scope:
- Using pip installed PySpark to start a standalone cluster
- Using pip installed PySpark for non-Python Spark programs

*I've done some work to test release-build locally but as a non-committer I've just done local testing.
## How was this patch tested?

Automated testing with virtualenv, manual testing with conda, a system wide install, and YARN integration.

release-build changes tested locally as a non-committer (no testing of upload artifacts to Apache staging websites)

Author: Holden Karau <holden@us.ibm.com>
Author: Juliet Hougland <juliet@cloudera.com>
Author: Juliet Hougland <not@myemail.com>

Closes #15659 from holdenk/SPARK-1267-pip-install-pyspark.
2016-11-16 14:22:15 -08:00
..
_data [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
_includes [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
_layouts [SPARK-17445][DOCS] Reference an ASF page as the main place to find third-party packages 2016-09-14 10:10:16 +01:00
_plugins [SPARK-16555] Work around Jekyll error-handling bug which led to silent failures 2016-07-14 15:55:36 -07:00
css [SPARK-12324][MLLIB][DOC] Fixes the sidebar in the ML documentation 2015-12-16 10:12:33 -08:00
img [MINOR][DOCS] Remove unused images; crush PNGs that could use it for good measure 2016-07-04 09:21:58 +01:00
js [SPARK-16822][DOC] Support latex in scaladoc. 2016-08-02 09:14:08 -07:00
_config.yml [SPARK-16637] Unified containerizer 2016-07-29 05:50:47 -07:00
api.md [SPARK-8639] [DOCS] Fixed Minor Typos in Documentation 2015-06-27 08:47:00 +03:00
building-spark.md [SPARK-1267][SPARK-18129] Allow PySpark to be pip installed 2016-11-16 14:22:15 -08:00
cluster-overview.md [SPARK-7997][CORE] Remove Akka from Spark Core and Streaming 2016-01-22 21:20:04 -08:00
configuration.md [MINOR][DOC] Fix typos in the 'configuration', 'monitoring' and 'sql-programming-guide' documentation 2016-11-16 10:34:56 +00:00
contributing-to-spark.md Work in progress: 2013-09-08 00:29:11 -07:00
ec2-scripts.md [SPARK-14742][DOCS] Redirect spark-ec2 doc to new location 2016-04-20 10:46:02 -07:00
graphx-programming-guide.md [SPARK-18428][DOC] Update docs for GraphX 2016-11-14 21:15:39 -08:00
hadoop-provided.md [SPARK-6511] [docs] Fix example command in hadoop-provided docs. 2015-06-11 15:29:03 -07:00
hardware-provisioning.md [MINOR] fix typo in documents 2016-06-07 13:29:27 +01:00
index.md [SPARK-1267][SPARK-18129] Allow PySpark to be pip installed 2016-11-16 14:22:15 -08:00
java-programming-guide.md [SPARK-1566] consolidate programming guide, and general doc updates 2014-05-30 00:34:33 -07:00
job-scheduling.md [SPARK-16505][YARN] Optionally propagate error during shuffle service startup. 2016-07-14 09:42:32 -05:00
ml-advanced.md [SPARK-12370][DOCUMENTATION] Documentation should link to examples … 2016-08-13 11:25:03 +01:00
ml-ann.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
ml-classification-regression.md [SPARK-18446][ML][DOCS] Add links to API docs for ML algos 2016-11-16 10:53:23 +00:00
ml-clustering.md [MINOR][DOC] Unify example marks 2016-11-08 14:04:07 +00:00
ml-collaborative-filtering.md [MINOR][DOC] Unify example marks 2016-11-08 14:04:07 +00:00
ml-decision-tree.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
ml-ensembles.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
ml-features.md [MINOR][DOC] Unify example marks 2016-11-08 14:04:07 +00:00
ml-guide.md [SPARK-16761][DOC][ML] Fix doc link in docs/ml-guide.md 2016-07-29 06:01:23 -07:00
ml-linear-methods.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
ml-migration-guides.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
ml-pipeline.md [SPARK-18446][ML][DOCS] Add links to API docs for ML algos 2016-11-16 10:53:23 +00:00
ml-survival-regression.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
ml-tuning.md [SPARK-18446][ML][DOCS] Add links to API docs for ML algos 2016-11-16 10:53:23 +00:00
mllib-classification-regression.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-clustering.md [SPARK-18427][DOC] Update docs of mllib.KMeans 2016-11-15 15:44:50 +01:00
mllib-collaborative-filtering.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-data-types.md [MINOR][DOCS] Fix minor typos in python example code 2016-08-30 11:23:37 +01:00
mllib-decision-tree.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-dimensionality-reduction.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-ensembles.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-evaluation-metrics.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-feature-extraction.md [SPARK-18088][ML] Various ChiSqSelector cleanups 2016-11-01 17:00:00 -07:00
mllib-frequent-pattern-mining.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-guide.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-isotonic-regression.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-linear-methods.md [SPARK-17718][DOCS][MLLIB] Make loss function formulation label note clearer in MLlib docs 2016-10-03 18:09:36 +00:00
mllib-migration-guides.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-naive-bayes.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-optimization.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-pmml-model-export.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
mllib-statistics.md [SPARK-14817][ML][MLLIB][DOC] Made DataFrame-based API primary in MLlib guide 2016-07-15 13:38:23 -07:00
monitoring.md [MINOR][DOC] Fix typos in the 'configuration', 'monitoring' and 'sql-programming-guide' documentation 2016-11-16 10:34:56 +00:00
programming-guide.md [SPARK-18432][DOC] Changed HDFS default block size from 64MB to 128MB 2016-11-14 21:07:59 +09:00
python-programming-guide.md [SPARK-1566] consolidate programming guide, and general doc updates 2014-05-30 00:34:33 -07:00
quick-start.md [SPARK-17707][WEBUI] Web UI prevents spark-submit application to be finished 2016-10-07 10:31:41 -07:00
README.md [SPARK-17736][DOCUMENTATION][SPARKR] Update R README for rmarkdown,… 2016-10-03 10:46:38 +01:00
running-on-mesos.md [SPARK-18232][MESOS] Support CNI 2016-11-14 23:46:54 -08:00
running-on-yarn.md [SPARK-14743][YARN] Add a configurable credential manager for Spark running on YARN 2016-08-10 15:39:30 -07:00
scala-programming-guide.md [SPARK-1566] consolidate programming guide, and general doc updates 2014-05-30 00:34:33 -07:00
security.md Update docs to include SASL support for RPC 2016-08-08 16:07:51 -07:00
spark-standalone.md [SPARK-17711] Compress rolled executor log 2016-10-18 13:23:31 -07:00
sparkr.md [SQL][DOC] updating doc for JSON source to link to jsonlines.org 2016-10-26 23:06:11 -07:00
sql-programming-guide.md [MINOR][DOC] Fix typos in the 'configuration', 'monitoring' and 'sql-programming-guide' documentation 2016-11-16 10:34:56 +00:00
storage-openstack-swift.md [SPARK-938][doc] Add OpenStack Swift support 2014-09-07 20:56:04 -07:00
streaming-custom-receivers.md [SPARK-12370][DOCUMENTATION] Documentation should link to examples … 2016-08-13 11:25:03 +01:00
streaming-flume-integration.md [SPARK-17985][CORE] Bump commons-lang3 version to 3.5. 2016-10-19 10:06:43 +01:00
streaming-kafka-0-8-integration.md [SPARK-17331][CORE][MLLIB] Avoid allocating 0-length arrays 2016-09-01 12:13:07 -07:00
streaming-kafka-0-10-integration.md [SPARK-18198][DOC][STREAMING] Highlight code snippets 2016-11-02 09:10:34 +00:00
streaming-kafka-integration.md [SPARK-16312][STREAMING][KAFKA][DOC] Doc for Kafka 0.10 integration 2016-08-05 10:13:32 +01:00
streaming-kinesis-integration.md [MINOR][DOCS] Fix th doc. of spark-streaming with kinesis 2016-09-29 08:26:03 -04:00
streaming-programming-guide.md [DOCS] Reorganize explanation of Accumulators and Broadcast Variables 2016-09-29 10:18:56 -07:00
structured-streaming-kafka-integration.md [DOC][MINOR] Kafka doc: breakup into lines 2016-11-16 09:51:59 +00:00
structured-streaming-programming-guide.md [SPARK-18461][DOCS][STRUCTUREDSTREAMING] Added more information about monitoring streaming queries 2016-11-16 11:03:10 -08:00
submitting-applications.md [SPARK-17898][DOCS] repositories needs username and password 2016-10-22 09:39:07 +01:00
tuning.md [SPARK-18432][DOC] Changed HDFS default block size from 64MB to 128MB 2016-11-14 21:07:59 +09:00

Welcome to the Spark documentation!

This readme will walk you through navigating and building the Spark documentation, which is included here with the Spark source code. You can also find documentation specific to release versions of Spark at http://spark.apache.org/documentation.html.

Read on to learn more about viewing documentation in plain text (i.e., markdown) or building the documentation yourself. Why build it yourself? So that you have the docs that corresponds to whichever version of Spark you currently have checked out of revision control.

Prerequisites

The Spark documentation build uses a number of tools to build HTML docs and API docs in Scala, Python and R.

You need to have Ruby and Python installed. Also install the following libraries:

    $ sudo gem install jekyll jekyll-redirect-from pygments.rb
    $ sudo pip install Pygments
    # Following is needed only for generating API docs
    $ sudo pip install sphinx pypandoc
    $ sudo Rscript -e 'install.packages(c("knitr", "devtools", "roxygen2", "testthat", "rmarkdown"), repos="http://cran.stat.ucla.edu/")'

(Note: If you are on a system with both Ruby 1.9 and Ruby 2.0 you may need to replace gem with gem2.0)

Generating the Documentation HTML

We include the Spark documentation as part of the source (as opposed to using a hosted wiki, such as the github wiki, as the definitive documentation) to enable the documentation to evolve along with the source code and be captured by revision control (currently git). This way the code automatically includes the version of the documentation that is relevant regardless of which version or release you have checked out or downloaded.

In this directory you will find textfiles formatted using Markdown, with an ".md" suffix. You can read those text files directly if you want. Start with index.md.

Execute jekyll build from the docs/ directory to compile the site. Compiling the site with Jekyll will create a directory called _site containing index.html as well as the rest of the compiled files.

$ cd docs
$ jekyll build

You can modify the default Jekyll build as follows:

    # Skip generating API docs (which takes a while)
    $ SKIP_API=1 jekyll build
    
    # Serve content locally on port 4000
    $ jekyll serve --watch
    
    # Build the site with extra features used on the live page
    $ PRODUCTION=1 jekyll build

API Docs (Scaladoc, Sphinx, roxygen2)

You can build just the Spark scaladoc by running build/sbt unidoc from the SPARK_PROJECT_ROOT directory.

Similarly, you can build just the PySpark docs by running make html from the SPARK_PROJECT_ROOT/python/docs directory. Documentation is only generated for classes that are listed as public in __init__.py. The SparkR docs can be built by running SPARK_PROJECT_ROOT/R/create-docs.sh.

When you run jekyll in the docs directory, it will also copy over the scaladoc for the various Spark subprojects into the docs directory (and then also into the _site directory). We use a jekyll plugin to run build/sbt unidoc before building the site so if you haven't run it (recently) it may take some time as it generates all of the scaladoc. The jekyll plugin also generates the PySpark docs using Sphinx.

NOTE: To skip the step of building and copying over the Scala, Python, R API docs, run SKIP_API=1 jekyll.