spark-instrumented-optimizer/docs
hyukjinkwon 41e0eb71a6 [SPARK-21773][BUILD][DOCS] Installs mkdocs if missing in the path in SQL documentation build
## What changes were proposed in this pull request?

This PR proposes to install `mkdocs` by `pip install` if missing in the path. Mainly to fix Jenkins's documentation build failure in `spark-master-docs`. See https://amplab.cs.berkeley.edu/jenkins/job/spark-master-docs/3580/console.

It also adds `mkdocs` as requirements in `docs/README.md`.

## How was this patch tested?

I manually ran `jekyll build` under `docs` directory after manually removing `mkdocs` via `pip uninstall mkdocs`.

Also, tested this in the same way but on CentOS Linux release 7.3.1611 (Core) where I built Spark few times but never built documentation before and `mkdocs` is not installed.

```
...
Moving back into docs dir.
Moving to SQL directory and building docs.
Missing mkdocs in your path, trying to install mkdocs for SQL documentation generation.
Collecting mkdocs
  Downloading mkdocs-0.16.3-py2.py3-none-any.whl (1.2MB)
    100% |████████████████████████████████| 1.2MB 574kB/s
Requirement already satisfied: PyYAML>=3.10 in /usr/lib64/python2.7/site-packages (from mkdocs)
Collecting livereload>=2.5.1 (from mkdocs)
  Downloading livereload-2.5.1-py2-none-any.whl
Collecting tornado>=4.1 (from mkdocs)
  Downloading tornado-4.5.1.tar.gz (483kB)
    100% |████████████████████████████████| 491kB 1.4MB/s
Collecting Markdown>=2.3.1 (from mkdocs)
  Downloading Markdown-2.6.9.tar.gz (271kB)
    100% |████████████████████████████████| 276kB 2.4MB/s
Collecting click>=3.3 (from mkdocs)
  Downloading click-6.7-py2.py3-none-any.whl (71kB)
    100% |████████████████████████████████| 71kB 2.8MB/s
Requirement already satisfied: Jinja2>=2.7.1 in /usr/lib/python2.7/site-packages (from mkdocs)
Requirement already satisfied: six in /usr/lib/python2.7/site-packages (from livereload>=2.5.1->mkdocs)
Requirement already satisfied: backports.ssl_match_hostname in /usr/lib/python2.7/site-packages (from tornado>=4.1->mkdocs)
Collecting singledispatch (from tornado>=4.1->mkdocs)
  Downloading singledispatch-3.4.0.3-py2.py3-none-any.whl
Collecting certifi (from tornado>=4.1->mkdocs)
  Downloading certifi-2017.7.27.1-py2.py3-none-any.whl (349kB)
    100% |████████████████████████████████| 358kB 2.1MB/s
Collecting backports_abc>=0.4 (from tornado>=4.1->mkdocs)
  Downloading backports_abc-0.5-py2.py3-none-any.whl
Requirement already satisfied: MarkupSafe>=0.23 in /usr/lib/python2.7/site-packages (from Jinja2>=2.7.1->mkdocs)
Building wheels for collected packages: tornado, Markdown
  Running setup.py bdist_wheel for tornado ... done
  Stored in directory: /root/.cache/pip/wheels/84/83/cd/6a04602633457269d161344755e6766d24307189b7a67ff4b7
  Running setup.py bdist_wheel for Markdown ... done
  Stored in directory: /root/.cache/pip/wheels/bf/46/10/c93e17ae86ae3b3a919c7b39dad3b5ccf09aeb066419e5c1e5
Successfully built tornado Markdown
Installing collected packages: singledispatch, certifi, backports-abc, tornado, livereload, Markdown, click, mkdocs
Successfully installed Markdown-2.6.9 backports-abc-0.5 certifi-2017.7.27.1 click-6.7 livereload-2.5.1 mkdocs-0.16.3 singledispatch-3.4.0.3 tornado-4.5.1
Generating markdown files for SQL documentation.
Generating HTML files for SQL documentation.
INFO    -  Cleaning site directory
INFO    -  Building documentation to directory: .../spark/sql/site
Moving back into docs dir.
Making directory api/sql
cp -r ../sql/site/. api/sql
            Source: .../spark/docs
       Destination: .../spark/docs/_site
      Generating...
                    done.
 Auto-regeneration: disabled. Use --watch to enable.
 ```

Author: hyukjinkwon <gurwls223@gmail.com>

Closes #18984 from HyukjinKwon/sql-doc-mkdocs.
2017-08-20 19:48:04 +09:00
..
_data [SPARK-20505][ML] Add docs and examples for ml.stat.Correlation and ml.stat.ChiSquareTest. 2017-05-18 11:54:09 +08: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-21485][SQL][DOCS] Spark SQL documentation generation for built-in functions 2017-07-26 09:38:51 -07:00
_plugins [SPARK-21485][SQL][DOCS] Spark SQL documentation generation for built-in functions 2017-07-26 09:38:51 -07:00
css [SPARK-12324][MLLIB][DOC] Fixes the sidebar in the ML documentation 2015-12-16 10:12:33 -08:00
img [SPARK-19074][SS][DOCS] Updated Structured Streaming Programming Guide for update mode and source/sink options 2017-01-06 11:29:01 -08:00
js [SPARK-19402][DOCS] Support LaTex inline formula correctly and fix warnings in Scala/Java APIs generation 2017-02-01 13:26:16 +00:00
_config.yml [SPARK-20759] SCALA_VERSION in _config.yml should be consistent with pom.xml 2017-05-19 15:26:39 +01:00
api.md [SPARK-21485][SQL][DOCS] Spark SQL documentation generation for built-in functions 2017-07-26 09:38:51 -07:00
building-spark.md [SPARK-19810][BUILD][CORE] Remove support for Scala 2.10 2017-07-13 17:06:24 +08:00
cloud-integration.md [SPARK-7481][BUILD] Add spark-hadoop-cloud module to pull in object store access. 2017-05-07 10:15:31 +01:00
cluster-overview.md [SPARK-18278][SCHEDULER] Documentation to point to Kubernetes cluster scheduler 2017-04-04 10:46:44 -07:00
configuration.md [SPARK-21637][SPARK-21451][SQL] get spark.hadoop.* properties from sysProps to hiveconf 2017-08-05 17:30:47 -07:00
contributing-to-spark.md [SPARK-18073][DOCS][WIP] Migrate wiki to spark.apache.org web site 2016-11-23 11:25:47 +00:00
graphx-programming-guide.md [SPARK-21267][DOCS][MINOR] Follow up to avoid referencing programming-guide redirector 2017-07-15 09:21:29 +01: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 [SPARK-19660][CORE][SQL] Replace the configuration property names that are deprecated in the version of Hadoop 2.6 2017-02-28 10:13:42 +00:00
index.md [SPARK-21485][SQL][DOCS] Spark SQL documentation generation for built-in functions 2017-07-26 09:38:51 -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-18705][ML][DOC] Update user guide to reflect one pass solver for L1 and elastic-net 2016-12-07 19:41:32 -08: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-20849][DOC][SPARKR] Document R DecisionTree 2017-05-25 23:00:50 -07:00
ml-clustering.md [SPARK-19386][SPARKR][DOC] Bisecting k-means in SparkR documentation 2017-02-03 12:19:47 -08:00
ml-collaborative-filtering.md [SPARK-19345][ML][DOC] Add doc for "coldStartStrategy" usage in ALS 2017-03-02 15:51:16 +02: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 [SPARK-19969][ML] Imputer doc and example 2017-04-03 11:42:33 +02:00
ml-frequent-pattern-mining.md [SPARK-19791][ML] Add doc and example for fpgrowth 2017-04-29 10:51:45 -07:00
ml-guide.md [SPARK-21267][DOCS][MINOR] Follow up to avoid referencing programming-guide redirector 2017-07-15 09:21:29 +01: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-20506][DOCS] 2.2 migration guide 2017-05-19 20:51:56 +02:00
ml-pipeline.md [SPARK-19797][DOC] ML pipeline document correction 2017-03-03 11:55:57 +01:00
ml-statistics.md [SPARK-20505][ML] Add docs and examples for ml.stat.Correlation and ml.stat.ChiSquareTest. 2017-05-18 11:54:09 +08: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-19410][DOC] Fix brokens links in ml-pipeline and ml-tuning 2017-02-01 13:27:20 +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-21615][ML][MLLIB][DOCS] Fix broken redirect in collaborative filtering docs to databricks training repo 2017-08-03 09:58:43 +01: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-6227][MLLIB][PYSPARK] Implement PySpark wrappers for SVD and PCA (v2) 2017-05-03 10:58:05 +02: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-17645][MLLIB][ML][FOLLOW-UP] document minor change 2017-01-10 13:09:58 +00:00
mllib-frequent-pattern-mining.md [SPARK-19791][ML] Add doc and example for fpgrowth 2017-04-29 10:51:45 -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-18445][BUILD][DOCS] Fix the markdown for Note:/NOTE:/Note that/'''Note:''' across Scala/Java API documentation 2016-11-19 11:24:15 +00:00
mllib-linear-methods.md [SPARK-19550][BUILD][CORE][WIP] Remove Java 7 support 2017-02-16 12:32:45 +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-21267][DOCS][MINOR] Follow up to avoid referencing programming-guide redirector 2017-07-15 09:21:29 +01: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-19550][BUILD][CORE][WIP] Remove Java 7 support 2017-02-16 12:32:45 +00:00
monitoring.md Small rewording about history server use case 2017-04-21 08:52:18 +01:00
programming-guide.md [SPARK-21267][SS][DOCS] Update Structured Streaming Documentation 2017-07-06 17:28:20 -07:00
quick-start.md Fix Java SimpleApp spark application 2017-08-03 23:40:25 +01:00
rdd-programming-guide.md [MINOR][DOC] Replace numTasks with numPartitions in programming guide 2017-07-30 18:45:45 +01:00
README.md [SPARK-21773][BUILD][DOCS] Installs mkdocs if missing in the path in SQL documentation build 2017-08-20 19:48:04 +09:00
running-on-mesos.md [SPARK-13041][MESOS] Adds sandbox uri to spark dispatcher ui 2017-08-07 10:32:19 +01:00
running-on-yarn.md [SPARK-20434][YARN][CORE] Move Hadoop delegation token code from yarn to core 2017-06-15 11:46:00 -07:00
security.md [MINOR][DOC] Fix doc for web UI https configuration 2017-03-03 14:23:31 -08:00
spark-standalone.md [SPARK-21267][DOCS][MINOR] Follow up to avoid referencing programming-guide redirector 2017-07-15 09:21:29 +01:00
sparkr.md [SPARK-20849][DOC][SPARKR] Document R DecisionTree 2017-05-25 23:00:50 -07:00
sql-programming-guide.md [SPARK-21519][SQL] Add an option to the JDBC data source to initialize the target DB environment 2017-08-11 12:03:37 -07:00
storage-openstack-swift.md [SPARK-7481][BUILD] Add spark-hadoop-cloud module to pull in object store access. 2017-05-07 10:15:31 +01:00
streaming-custom-receivers.md [SPARK-21508][DOC] Fix example code provided in Spark Streaming Documentation 2017-07-29 13:26:10 +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-19550][BUILD][CORE][WIP] Remove Java 7 support 2017-02-16 12:32:45 +00:00
streaming-kafka-0-10-integration.md [SPARK-19185][DSTREAM] Make Kafka consumer cache configurable 2017-06-08 09:55:43 -07: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 [SPARK-20855][Docs][DStream] Update the Spark kinesis docs to use the KinesisInputDStream builder instead of deprecated KinesisUtils 2017-07-25 08:27:03 +01:00
streaming-programming-guide.md [SPARK-21267][DOCS][MINOR] Follow up to avoid referencing programming-guide redirector 2017-07-15 09:21:29 +01:00
structured-streaming-kafka-integration.md [MINOR][SS][DOCS] Minor doc change for kafka integration 2017-07-21 08:43:38 +01:00
structured-streaming-programming-guide.md Fix Java SimpleApp spark application 2017-08-03 23:40:25 +01:00
submitting-applications.md Document Master URL format in high availability set up 2017-04-11 10:34:39 +01:00
tuning.md [SPARK-21267][DOCS][MINOR] Follow up to avoid referencing programming-guide redirector 2017-07-15 09:21:29 +01: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 mkdocs
    $ 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 and SQL API docs, run SKIP_API=1 jekyll. In addition, SKIP_SCALADOC=1, SKIP_PYTHONDOC=1, SKIP_RDOC=1 and SKIP_SQLDOC=1 can be used to skip a single step of the corresponding language.