spark-instrumented-optimizer/docs
Zhan Zhang 7c89a8f0c8 [SPARK-2706][SQL] Enable Spark to support Hive 0.13
Given that a lot of users are trying to use hive 0.13 in spark, and the incompatibility between hive-0.12 and hive-0.13 on the API level I want to propose following approach, which has no or minimum impact on existing hive-0.12 support, but be able to jumpstart the development of hive-0.13 and future version support.

Approach: Introduce “hive-version” property,  and manipulate pom.xml files to support different hive version at compiling time through shim layer, e.g., hive-0.12.0 and hive-0.13.1. More specifically,

1. For each different hive version, there is a very light layer of shim code to handle API differences, sitting in sql/hive/hive-version, e.g., sql/hive/v0.12.0 or sql/hive/v0.13.1

2. Add a new profile hive-default active by default, which picks up all existing configuration and hive-0.12.0 shim (v0.12.0)  if no hive.version is specified.

3. If user specifies different version (currently only 0.13.1 by -Dhive.version = 0.13.1), hive-versions profile will be activated, which pick up hive-version specific shim layer and configuration, mainly the hive jars and hive-version shim, e.g., v0.13.1.

4. With this approach, nothing is changed with current hive-0.12 support.

No change by default: sbt/sbt -Phive
For example: sbt/sbt -Phive -Pyarn -Phadoop-2.4 -Dhadoop.version=2.4.0 assembly

To enable hive-0.13: sbt/sbt -Dhive.version=0.13.1
For example: sbt/sbt -Dhive.version=0.13.1 -Pyarn -Phadoop-2.4 -Dhadoop.version=2.4.0 assembly

Note that in hive-0.13, hive-thriftserver is not enabled, which should be fixed by other Jira, and we don’t need -Phive with -Dhive.version in building (probably we should use -Phive -Dhive.version=xxx instead after thrift server is also supported in hive-0.13.1).

Author: Zhan Zhang <zhazhan@gmail.com>
Author: zhzhan <zhazhan@gmail.com>
Author: Patrick Wendell <pwendell@gmail.com>

Closes #2241 from zhzhan/spark-2706 and squashes the following commits:

3ece905 [Zhan Zhang] minor fix
410b668 [Zhan Zhang] solve review comments
cbb4691 [Zhan Zhang] change run-test for new options
0d4d2ed [Zhan Zhang] rebase
497b0f4 [Zhan Zhang] Merge branch 'master' of https://github.com/apache/spark
8fad1cf [Zhan Zhang] change the pom file and make hive-0.13.1 as the default
ab028d1 [Zhan Zhang] rebase
4a2e36d [Zhan Zhang] Merge branch 'master' of https://github.com/apache/spark
4cb1b93 [zhzhan] Merge pull request #1 from pwendell/pr-2241
b0478c0 [Patrick Wendell] Changes to simplify the build of SPARK-2706
2b50502 [Zhan Zhang] rebase
a72c0d4 [Zhan Zhang] Merge branch 'master' of https://github.com/apache/spark
cb22863 [Zhan Zhang] correct the typo
20f6cf7 [Zhan Zhang] solve compatability issue
f7912a9 [Zhan Zhang] rebase and solve review feedback
301eb4a [Zhan Zhang] Merge branch 'master' of https://github.com/apache/spark
10c3565 [Zhan Zhang] address review comments
6bc9204 [Zhan Zhang] rebase and remove temparory repo
d3aa3f2 [Zhan Zhang] Merge branch 'master' into spark-2706
cedcc6f [Zhan Zhang] Merge branch 'master' of https://github.com/apache/spark
3ced0d7 [Zhan Zhang] rebase
d9b981d [Zhan Zhang] rebase and fix error due to rollback
adf4924 [Zhan Zhang] Merge branch 'master' of https://github.com/apache/spark
3dd50e8 [Zhan Zhang] solve conflicts and remove unnecessary implicts
d10bf00 [Zhan Zhang] Merge branch 'master' of https://github.com/apache/spark
dc7bdb3 [Zhan Zhang] solve conflicts
7e0cc36 [Zhan Zhang] Merge branch 'master' of https://github.com/apache/spark
d7c3e1e [Zhan Zhang] Merge branch 'master' into spark-2706
68deb11 [Zhan Zhang] Merge branch 'master' of https://github.com/apache/spark
d48bd18 [Zhan Zhang] address review comments
3ee3b2b [Zhan Zhang] Merge branch 'master' of https://github.com/apache/spark
57ea52e [Zhan Zhang] Merge branch 'master' into spark-2706
2b0d513 [Zhan Zhang] Merge branch 'master' of https://github.com/apache/spark
9412d24 [Zhan Zhang] address review comments
f4af934 [Zhan Zhang] rebase
1ccd7cc [Zhan Zhang] Merge branch 'master' of https://github.com/apache/spark
128b60b [Zhan Zhang] ignore 0.12.0 test cases for the time being
af9feb9 [Zhan Zhang] Merge branch 'master' of https://github.com/apache/spark
5f5619f [Zhan Zhang] restructure the directory and different hive version support
05d3683 [Zhan Zhang] solve conflicts
e4c1982 [Zhan Zhang] Merge branch 'master' of https://github.com/apache/spark
94b4fdc [Zhan Zhang] Spark-2706: hive-0.13.1 support on spark
87ebf3b [Zhan Zhang] Merge branch 'master' into spark-2706
921e914 [Zhan Zhang] Merge branch 'master' of https://github.com/apache/spark
f896b2a [Zhan Zhang] Merge branch 'master' into spark-2706
789ea21 [Zhan Zhang] Merge branch 'master' of https://github.com/apache/spark
cb53a2c [Zhan Zhang] Merge branch 'master' of https://github.com/apache/spark
f6a8a40 [Zhan Zhang] revert
ba14f28 [Zhan Zhang] test
dbedff3 [Zhan Zhang] Merge remote-tracking branch 'upstream/master'
70964fe [Zhan Zhang] revert
fe0f379 [Zhan Zhang] Merge branch 'master' of https://github.com/zhzhan/spark
70ffd93 [Zhan Zhang] revert
42585ec [Zhan Zhang] test
7d5fce2 [Zhan Zhang] test
2014-10-24 11:03:17 -07:00
..
_layouts Add a Community Projects page 2014-09-16 13:46:06 -07:00
_plugins [SPARK-3412] [PySpark] Replace Epydoc with Sphinx to generate Python API docs 2014-10-07 18:09:27 -07:00
css [SPARK-1566] consolidate programming guide, and general doc updates 2014-05-30 00:34:33 -07:00
img [SPARK-2419][Streaming][Docs] More updates to the streaming programming guide 2014-09-06 14:46:43 -07:00
js [SPARK-1566] consolidate programming guide, and general doc updates 2014-05-30 00:34:33 -07:00
_config.yml [SPARK-3412] [PySpark] Replace Epydoc with Sphinx to generate Python API docs 2014-10-07 18:09:27 -07:00
api.md [SPARK-1439, SPARK-1440] Generate unified Scaladoc across projects and Javadocs 2014-04-21 21:57:40 -07:00
bagel-programming-guide.md SPARK-2363. Clean MLlib's sample data files 2014-07-13 19:27:43 -07:00
building-spark.md [SPARK-2706][SQL] Enable Spark to support Hive 0.13 2014-10-24 11:03:17 -07:00
cluster-overview.md [SPARK-1566] consolidate programming guide, and general doc updates 2014-05-30 00:34:33 -07:00
configuration.md SPARK-1813. Add a utility to SparkConf that makes using Kryo really easy 2014-10-21 21:53:09 -07:00
contributing-to-spark.md Work in progress: 2013-09-08 00:29:11 -07:00
ec2-scripts.md stop, start and destroy require the EC2_REGION 2014-09-26 23:00:40 -07:00
graphx-programming-guide.md [SPARK-1566] consolidate programming guide, and general doc updates 2014-05-30 00:34:33 -07:00
hadoop-third-party-distributions.md SPARK-3069 [DOCS] Build instructions in README are outdated 2014-09-16 09:18:03 -07:00
hardware-provisioning.md Change port from 3030 to 4040 2013-09-11 10:01:38 -07:00
index.md Add a Community Projects page 2014-09-16 13:46:06 -07: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-1183. Don't use "worker" to mean executor 2014-03-13 12:11:33 -07:00
mllib-classification-regression.md SPARK-2830 [MLlib]: re-organize mllib documentation 2014-08-12 17:15:21 -07:00
mllib-clustering.md SPARK-1307 [DOCS] Don't use term 'standalone' to refer to a Spark Application 2014-10-14 21:37:51 -07:00
mllib-collaborative-filtering.md SPARK-1307 [DOCS] Don't use term 'standalone' to refer to a Spark Application 2014-10-14 21:37:51 -07:00
mllib-data-types.md [SPARK-2830][MLLIB] doc update for 1.1 2014-08-27 01:19:48 -07:00
mllib-decision-tree.md [SPARK-3443][MLLIB] update default values of tree: 2014-09-08 18:59:57 -07:00
mllib-dimensionality-reduction.md SPARK-1307 [DOCS] Don't use term 'standalone' to refer to a Spark Application 2014-10-14 21:37:51 -07:00
mllib-feature-extraction.md [SPARK-4055][MLlib] Inconsistent spelling 'MLlib' and 'MLLib' 2014-10-23 09:19:32 -07:00
mllib-guide.md [SPARK-3227] [mllib] Added migration guide for v1.0 to v1.1 2014-08-27 01:45:59 -07:00
mllib-linear-methods.md SPARK-1307 [DOCS] Don't use term 'standalone' to refer to a Spark Application 2014-10-14 21:37:51 -07:00
mllib-naive-bayes.md [SPARK-3130][MLLIB] detect negative values in naive Bayes 2014-08-19 21:01:23 -07:00
mllib-optimization.md [SPARK-1484][MLLIB] Warn when running an iterative algorithm on uncached data. 2014-09-25 16:11:00 -07:00
mllib-statistics.md [SPARK-4055][MLlib] Inconsistent spelling 'MLlib' and 'MLLib' 2014-10-23 09:19:32 -07:00
monitoring.md [SPARK-2098] All Spark processes should support spark-defaults.conf, config file 2014-10-14 22:16:38 -07:00
programming-guide.md [SPARK-3772] Allow ipython to be used by Pyspark workers; IPython support improvements: 2014-10-09 16:08:07 -07: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-1307 [DOCS] Don't use term 'standalone' to refer to a Spark Application 2014-10-14 21:37:51 -07:00
README.md [SPARK-3952] [Streaming] [PySpark] add Python examples in Streaming Programming Guide 2014-10-18 19:14:48 -07:00
running-on-mesos.md [SPARK-3240] Adding known issue for MESOS-1688 2014-08-26 18:30:45 -07:00
running-on-yarn.md Modify default YARN memory_overhead-- from an additive constant to a multiplier 2014-10-02 13:48:35 -05:00
scala-programming-guide.md [SPARK-1566] consolidate programming guide, and general doc updates 2014-05-30 00:34:33 -07:00
security.md [SPARK-2157] Enable tight firewall rules for Spark 2014-08-06 00:07:40 -07:00
spark-standalone.md Docs : use "--total-executor-cores" rather than "--cores" after spark-shell 2014-09-27 09:42:01 -07:00
sql-programming-guide.md [SQL][Docs] Update the output of printSchema and fix a typo in SQL programming guide. 2014-10-02 11:37:24 -07:00
storage-openstack-swift.md [SPARK-938][doc] Add OpenStack Swift support 2014-09-07 20:56:04 -07:00
streaming-custom-receivers.md [DOCS] Fixed wrong links 2014-08-19 22:43:22 -07:00
streaming-flume-integration.md [SPARK-2419][Streaming][Docs] Updates to the streaming programming guide 2014-09-03 17:38:01 -07:00
streaming-kafka-integration.md [SPARK-2419][Streaming][Docs] Updates to the streaming programming guide 2014-09-03 17:38:01 -07:00
streaming-kinesis-integration.md SPARK-3069 [DOCS] Build instructions in README are outdated 2014-09-16 09:18:03 -07:00
streaming-programming-guide.md [SPARK-3952] [Streaming] [PySpark] add Python examples in Streaming Programming Guide 2014-10-18 19:14:48 -07:00
submitting-applications.md SPARK-2310. Support arbitrary Spark properties on the command line with ... 2014-07-23 23:11:26 -07:00
tuning.md SPARK-1813. Add a utility to SparkConf that makes using Kryo really easy 2014-10-21 21:53:09 -07: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.

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.

The markdown code can be compiled to HTML using the Jekyll tool. Jekyll and a few dependencies must be installed for this to work. We recommend installing via the Ruby Gem dependency manager. Since the exact HTML output varies between versions of Jekyll and its dependencies, we list specific versions here in some cases:

$ sudo gem install jekyll
$ sudo gem install jekyll-redirect-from

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

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

Pygments

We also use pygments (http://pygments.org) for syntax highlighting in documentation markdown pages, so you will also need to install that (it requires Python) by running sudo easy_install Pygments.

To mark a block of code in your markdown to be syntax highlighted by jekyll during the compile phase, use the following sytax:

{% highlight scala %}
// Your scala code goes here, you can replace scala with many other
// supported languages too.
{% endhighlight %}

API Docs (Scaladoc and Sphinx)

You can build just the Spark scaladoc by running sbt/sbt doc 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.

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 sbt/sbt doc 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 Sphinx.

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