spark-instrumented-optimizer/docs
Wenchen Fan 4f274a4de9
[SPARK-31147][SQL] Forbid CHAR type in non-Hive-Serde tables
### What changes were proposed in this pull request?

Spark introduced CHAR type for hive compatibility but it only works for hive tables. CHAR type is never documented and is treated as STRING type for non-Hive tables.

However, this leads to confusing behaviors

**Apache Spark 3.0.0-preview2**
```
spark-sql> CREATE TABLE t(a CHAR(3));

spark-sql> INSERT INTO TABLE t SELECT 'a ';

spark-sql> SELECT a, length(a) FROM t;
a 	2
```

**Apache Spark 2.4.5**
```
spark-sql> CREATE TABLE t(a CHAR(3));

spark-sql> INSERT INTO TABLE t SELECT 'a ';

spark-sql> SELECT a, length(a) FROM t;
a  	3
```

According to the SQL standard, `CHAR(3)` should guarantee all the values are of length 3. Since `CHAR(3)` is treated as STRING so Spark doesn't guarantee it.

This PR forbids CHAR type in non-Hive tables as it's not supported correctly.

### Why are the changes needed?

avoid confusing/wrong behavior

### Does this PR introduce any user-facing change?

yes, now users can't create/alter non-Hive tables with CHAR type.

### How was this patch tested?

new tests

Closes #27902 from cloud-fan/char.

Authored-by: Wenchen Fan <wenchen@databricks.com>
Signed-off-by: Dongjoon Hyun <dongjoon@apache.org>
2020-03-25 09:25:55 -07:00
..
_data [SPARK-31030][SQL] Backward Compatibility for Parsing and formatting Datetime 2020-03-11 14:11:13 +08:00
_includes [SPARK-29052][DOCS][ML][PYTHON][CORE][R][SQL][SS] Create a Migration Guide tap in Spark documentation 2019-09-15 11:17:30 -07:00
_layouts [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
_plugins [SPARK-28752][BUILD][DOCS][FOLLOW-UP] Render examples imported from Jekyll properly via Rouge 2020-01-13 10:47:51 +09:00
css [MINOR][DOC] Fix document UI left menu broken 2020-02-06 14:58:53 -08:00
img [SPARK-30041][SQL][WEBUI] Add Codegen Stage Id to Stage DAG visualization in Web UI 2020-01-18 01:00:45 +08:00
js [SPARK-28004][UI] Update jquery to 3.4.1 2019-06-14 22:19:20 -07:00
.gitignore [SPARK-30510][SQL][DOCS] Publicly document Spark SQL configuration options 2020-02-09 19:20:47 +09:00
_config.yml [SPARK-30950][BUILD] Setting version to 3.1.0-SNAPSHOT 2020-02-25 19:44:31 -08:00
api.md [SPARK-26918][DOCS] All .md should have ASF license header 2019-03-30 19:49:45 -05:00
building-spark.md [SPARK-23435][SPARKR][TESTS] Update testthat to >= 2.0.0 2020-01-29 10:37:08 +09:00
cloud-integration.md [SPARK-29028][DOCS] Add links to IBM Cloud Object Storage connector in cloud-integration.md 2019-09-10 11:19:55 -05:00
cluster-overview.md [SPARK-26918][DOCS] All .md should have ASF license header 2019-03-30 19:49:45 -05:00
configuration.md [SPARK-31141][DSTREAMS][DOC] Add version information to the configuration of Dstreams 2020-03-23 13:01:44 +09:00
contributing-to-spark.md [SPARK-26918][DOCS] All .md should have ASF license header 2019-03-30 19:49:45 -05:00
core-migration-guide.md [SPARK-30235][CORE] Switching off host local disk reading of shuffle blocks in case of useOldFetchProtocol 2019-12-17 10:32:15 -08:00
graphx-programming-guide.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
hadoop-provided.md [SPARK-29574][K8S] Add SPARK_DIST_CLASSPATH to the executor class path 2019-12-16 10:11:50 -08:00
hardware-provisioning.md [MINOR][DOCS] Fix some broken links in docs 2019-04-13 22:27:25 +09:00
index.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
job-scheduling.md [SPARK-22340][PYTHON] Add a mode to pin Python thread into JVM's 2019-11-08 06:44:58 +09:00
migration-guide.md [SPARK-29052][DOCS][ML][PYTHON][CORE][R][SQL][SS] Create a Migration Guide tap in Spark documentation 2019-09-15 11:17:30 -07:00
ml-advanced.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
ml-ann.md [SPARK-26918][DOCS] All .md should have ASF license header 2019-03-30 19:49:45 -05:00
ml-classification-regression.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
ml-clustering.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
ml-collaborative-filtering.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
ml-datasource.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
ml-decision-tree.md [SPARK-26918][DOCS] All .md should have ASF license header 2019-03-30 19:49:45 -05:00
ml-ensembles.md [SPARK-26918][DOCS] All .md should have ASF license header 2019-03-30 19:49:45 -05:00
ml-features.md [SPARK-31012][ML][PYSPARK][DOCS] Updating ML API docs for 3.0 changes 2020-03-07 11:42:05 -06:00
ml-frequent-pattern-mining.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
ml-guide.md [SPARK-30773][ML] Support NativeBlas for level-1 routines 2020-03-20 10:32:58 -05:00
ml-linear-methods.md [SPARK-26918][DOCS] All .md should have ASF license header 2019-03-30 19:49:45 -05:00
ml-migration-guide.md [SPARK-30934][ML][DOCS] Update ml-guide and ml-migration-guide for 3.0 release 2020-03-07 18:09:00 -06:00
ml-pipeline.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
ml-statistics.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
ml-survival-regression.md [SPARK-26918][DOCS] All .md should have ASF license header 2019-03-30 19:49:45 -05:00
ml-tuning.md [SPARK-30933][ML][DOCS] ML, GraphX 3.0 QA: Update user guide for new features & APIs 2020-03-18 13:21:24 -05:00
mllib-classification-regression.md [SPARK-26918][DOCS] All .md should have ASF license header 2019-03-30 19:49:45 -05:00
mllib-clustering.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
mllib-collaborative-filtering.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
mllib-data-types.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
mllib-decision-tree.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
mllib-dimensionality-reduction.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
mllib-ensembles.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
mllib-evaluation-metrics.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
mllib-feature-extraction.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
mllib-frequent-pattern-mining.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
mllib-guide.md [SPARK-26918][DOCS] All .md should have ASF license header 2019-03-30 19:49:45 -05:00
mllib-isotonic-regression.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
mllib-linear-methods.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
mllib-naive-bayes.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
mllib-optimization.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
mllib-pmml-model-export.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
mllib-statistics.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
monitoring.md [MINOR][DOCS] Fix [[...]] to ... and <code>...</code> in documentation 2020-03-13 16:44:23 -07:00
programming-guide.md [SPARK-26918][DOCS] All .md should have ASF license header 2019-03-30 19:49:45 -05:00
pyspark-migration-guide.md [SPARK-30812][SQL][CORE] Revise boolean config name to comply with new config naming policy 2020-02-18 20:39:50 +08:00
quick-start.md [MINOR][DOCS] Fix [[...]] to ... and <code>...</code> in documentation 2020-03-13 16:44:23 -07:00
rdd-programming-guide.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
README.md [SPARK-30879][DOCS] Refine workflow for building docs 2020-03-07 11:43:32 -06:00
running-on-kubernetes.md [SPARK-31118][K8S][DOC] Add version information to the configuration of K8S 2020-03-12 09:54:08 +09:00
running-on-mesos.md [SPARK-31109][MESOS][DOC] Add version information to the configuration of Mesos 2020-03-12 11:02:29 +09:00
running-on-yarn.md [SPARK-31092][YARN][DOC] Add version information to the configuration of Yarn 2020-03-12 09:52:57 +09:00
security.md [SPARK-31002][CORE][DOC][FOLLOWUP] Add version information to the configuration of Core 2020-03-16 10:08:07 +09:00
spark-standalone.md [SPARK-30889][SPARK-30913][CORE][DOC] Add version information to the configuration of Tests.scala and Worker 2020-03-05 11:58:21 +09:00
sparkr-migration-guide.md [SPARK-29052][DOCS][ML][PYTHON][CORE][R][SQL][SS] Create a Migration Guide tap in Spark documentation 2019-09-15 11:17:30 -07:00
sparkr.md [SPARK-29339][R] Support Arrow 0.14 in vectoried dapply and gapply (test it in AppVeyor build) 2019-10-04 08:56:45 +09:00
sql-data-sources-avro.md [SPARK-30506][SQL][DOC] Document for generic file source options/configs 2020-02-05 17:16:38 +08:00
sql-data-sources-binaryFile.md [SPARK-27627][SQL] Make option "pathGlobFilter" as a general option for all file sources 2019-05-09 08:41:43 +09:00
sql-data-sources-generic-options.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
sql-data-sources-hive-tables.md [SPARK-30280][DOC] Update docs for make Hive 2.3 dependency by default 2019-12-21 10:51:28 -08:00
sql-data-sources-jdbc.md [SPARK-30874][SQL] Support Postgres Kerberos login in JDBC connector 2020-03-12 19:04:35 -07:00
sql-data-sources-json.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
sql-data-sources-load-save-functions.md [SPARK-30506][SQL][DOC] Document for generic file source options/configs 2020-02-05 17:16:38 +08:00
sql-data-sources-orc.md [SPARK-29529][DOCS] Remove unnecessary orc version and hive version in doc 2019-10-22 14:49:23 +09:00
sql-data-sources-parquet.md [MINOR][DOCS] Use proper html tag in markdown 2019-10-30 15:30:58 +09:00
sql-data-sources-troubleshooting.md [SPARK-26918][DOCS] All .md should have ASF license header 2019-03-30 19:49:45 -05:00
sql-data-sources.md [SPARK-30506][SQL][DOC] Document for generic file source options/configs 2020-02-05 17:16:38 +08:00
sql-distributed-sql-engine.md [SPARK-30280][DOC] Update docs for make Hive 2.3 dependency by default 2019-12-21 10:51:28 -08:00
sql-getting-started.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
sql-migration-guide.md [SPARK-31147][SQL] Forbid CHAR type in non-Hive-Serde tables 2020-03-25 09:25:55 -07:00
sql-migration-old.md [SPARK-29052][DOCS][ML][PYTHON][CORE][R][SQL][SS] Create a Migration Guide tap in Spark documentation 2019-09-15 11:17:30 -07:00
sql-performance-tuning.md [SPARK-30864][SQL][DOC] add the user guide for Adaptive Query Execution 2020-03-16 23:33:56 +08:00
sql-programming-guide.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
sql-pyspark-pandas-with-arrow.md [SQL][DOCS][MINOR] Fix typos and wrong phrases in docs 2020-03-05 16:54:59 -08:00
sql-ref-ansi-compliance.md [SPARK-31171][SQL][FOLLOWUP] update document 2020-03-19 07:29:31 +09:00
sql-ref-datatypes.md [SPARK-29587][DOC][FOLLOWUP] Add SQL tab in the Data Types page 2020-02-08 14:28:15 -08:00
sql-ref-datetime-pattern.md [SPARK-31189][SQL][DOCS] Fix errors and missing parts for datetime pattern document 2020-03-20 21:59:26 +08:00
sql-ref-functions-builtin-aggregate.md [SPARK-28734][DOC] Initial table of content in the left hand side bar for SQL doc 2019-08-18 23:17:50 -07:00
sql-ref-functions-builtin-scalar.md [SPARK-28734][DOC] Initial table of content in the left hand side bar for SQL doc 2019-08-18 23:17:50 -07:00
sql-ref-functions-builtin.md [SPARK-30691][SQL][DOC] Add a few main pages to SQL Reference 2020-01-31 12:52:22 -06:00
sql-ref-functions-udf-aggregate.md [SPARK-28734][DOC] Initial table of content in the left hand side bar for SQL doc 2019-08-18 23:17:50 -07:00
sql-ref-functions-udf-scalar.md [SPARK-28734][DOC] Initial table of content in the left hand side bar for SQL doc 2019-08-18 23:17:50 -07:00
sql-ref-functions-udf.md [SPARK-30691][SQL][DOC] Add a few main pages to SQL Reference 2020-01-31 12:52:22 -06:00
sql-ref-functions.md [SPARK-30691][SQL][DOC] Add a few main pages to SQL Reference 2020-01-31 12:52:22 -06:00
sql-ref-nan-semantics.md [SPARK-28734][DOC] Initial table of content in the left hand side bar for SQL doc 2019-08-18 23:17:50 -07:00
sql-ref-null-semantics.md [SQL][DOCS][MINOR] Fix typos and wrong phrases in docs 2020-03-05 16:54:59 -08:00
sql-ref-syntax-aux-analyze-table.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
sql-ref-syntax-aux-analyze.md [SPARK-30691][SQL][DOC] Add a few main pages to SQL Reference 2020-01-31 12:52:22 -06:00
sql-ref-syntax-aux-cache-cache-table.md [SPARK-27545][SQL][DOC] Update the Documentation for CACHE TABLE and UNCACHE TABLE 2020-02-11 20:42:02 +08:00
sql-ref-syntax-aux-cache-clear-cache.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-aux-cache-refresh.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
sql-ref-syntax-aux-cache-uncache-table.md [SPARK-27545][SQL][DOC] Update the Documentation for CACHE TABLE and UNCACHE TABLE 2020-02-11 20:42:02 +08:00
sql-ref-syntax-aux-cache.md [SPARK-30691][SQL][DOC] Add a few main pages to SQL Reference 2020-01-31 12:52:22 -06:00
sql-ref-syntax-aux-conf-mgmt-reset.md [SPARK-28814][SQL][DOC] Document SET/RESET in SQL Reference 2019-09-17 14:36:56 -07:00
sql-ref-syntax-aux-conf-mgmt-set.md [SPARK-28814][SQL][DOC] Document SET/RESET in SQL Reference 2019-09-17 14:36:56 -07:00
sql-ref-syntax-aux-conf-mgmt.md [SPARK-30691][SQL][DOC] Add a few main pages to SQL Reference 2020-01-31 12:52:22 -06:00
sql-ref-syntax-aux-describe-database.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-aux-describe-function.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-aux-describe-query.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-aux-describe-table.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-aux-describe.md [SPARK-30691][SQL][DOC] Add a few main pages to SQL Reference 2020-01-31 12:52:22 -06:00
sql-ref-syntax-aux-refresh-table.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
sql-ref-syntax-aux-resource-mgmt-add-file.md [SPARK-30234][SQL][DOCS][FOLOWUP] Update Documentation for ADD FILE and LIST FILE 2020-01-14 09:31:09 +09:00
sql-ref-syntax-aux-resource-mgmt-add-jar.md [SPARK-30342][SQL][DOC] Update LIST FILE/JAR command Documentation 2019-12-29 12:28:01 -06:00
sql-ref-syntax-aux-resource-mgmt-list-file.md [SPARK-30234][SQL][DOCS][FOLOWUP] Update Documentation for ADD FILE and LIST FILE 2020-01-14 09:31:09 +09:00
sql-ref-syntax-aux-resource-mgmt-list-jar.md [SPARK-30342][SQL][DOC] Update LIST FILE/JAR command Documentation 2019-12-29 12:28:01 -06:00
sql-ref-syntax-aux-resource-mgmt.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
sql-ref-syntax-aux-show-columns.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-aux-show-create-table.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-aux-show-databases.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-aux-show-functions.md [SQL][DOCS][MINOR] Fix typos and wrong phrases in docs 2020-03-05 16:54:59 -08:00
sql-ref-syntax-aux-show-partitions.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-aux-show-table.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-aux-show-tables.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
sql-ref-syntax-aux-show-tblproperties.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-aux-show.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
sql-ref-syntax-aux.md [SPARK-30691][SQL][DOC] Add a few main pages to SQL Reference 2020-01-31 12:52:22 -06:00
sql-ref-syntax-ddl-alter-database.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-ddl-alter-table.md [SPARK-30962][SQL][DOC] Documentation for Alter table command phase 2 2020-03-11 08:47:30 +09:00
sql-ref-syntax-ddl-alter-view.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-ddl-create-database.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-ddl-create-function.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-ddl-create-table-datasource.md [SPARK-30878][SQL][DOC] Improve the CREATE TABLE document 2020-02-20 13:07:52 +08:00
sql-ref-syntax-ddl-create-table-hiveformat.md [SPARK-30878][SQL][DOC] Improve the CREATE TABLE document 2020-02-20 13:07:52 +08:00
sql-ref-syntax-ddl-create-table-like.md [SQL][DOCS][MINOR] Fix typos and wrong phrases in docs 2020-03-05 16:54:59 -08:00
sql-ref-syntax-ddl-create-table.md [SPARK-30878][SQL][DOC] Improve the CREATE TABLE document 2020-02-20 13:07:52 +08:00
sql-ref-syntax-ddl-create-view.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-ddl-drop-database.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
sql-ref-syntax-ddl-drop-function.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
sql-ref-syntax-ddl-drop-table.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-ddl-drop-view.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-ddl-repair-table.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-ddl-truncate-table.md [SPARK-30085][SQL][DOC] Standardize sql reference 2019-12-02 09:05:40 -06:00
sql-ref-syntax-ddl.md [SPARK-30691][SQL][DOC] Add a few main pages to SQL Reference 2020-01-31 12:52:22 -06:00
sql-ref-syntax-dml-insert-into.md [MINOR][DOC][SQL][CORE] Fix typo in document and comments 2019-12-21 14:08:58 -08:00
sql-ref-syntax-dml-insert-overwrite-directory-hive.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
sql-ref-syntax-dml-insert-overwrite-directory.md [SPARK-31133][SQL][DOC] fix sql ref doc for DML 2020-03-23 22:00:50 +08:00
sql-ref-syntax-dml-insert-overwrite-table.md [SPARK-31133][SQL][DOC] fix sql ref doc for DML 2020-03-23 22:00:50 +08:00
sql-ref-syntax-dml-insert.md [SPARK-28786][DOC][SQL] Document INSERT statement in SQL Reference 2019-08-29 09:00:42 -07:00
sql-ref-syntax-dml-load.md [SPARK-31133][SQL][DOC] fix sql ref doc for DML 2020-03-23 22:00:50 +08:00
sql-ref-syntax-dml.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
sql-ref-syntax-qry-aggregation.md [SPARK-28734][DOC] Initial table of content in the left hand side bar for SQL doc 2019-08-18 23:17:50 -07:00
sql-ref-syntax-qry-explain.md [SPARK-28825][SQL][DOC] Documentation for Explain Command 2020-01-08 09:20:39 +09:00
sql-ref-syntax-qry-sampling.md [SPARK-28734][DOC] Initial table of content in the left hand side bar for SQL doc 2019-08-18 23:17:50 -07:00
sql-ref-syntax-qry-select-clusterby.md [SPARK-31110][DOCS][SQL] refine sql doc for SELECT 2020-03-11 16:52:40 -07:00
sql-ref-syntax-qry-select-cte.md [SPARK-28734][DOC] Initial table of content in the left hand side bar for SQL doc 2019-08-18 23:17:50 -07:00
sql-ref-syntax-qry-select-distinct.md [SPARK-28734][DOC] Initial table of content in the left hand side bar for SQL doc 2019-08-18 23:17:50 -07:00
sql-ref-syntax-qry-select-distribute-by.md [SPARK-31110][DOCS][SQL] refine sql doc for SELECT 2020-03-11 16:52:40 -07:00
sql-ref-syntax-qry-select-groupby.md [SPARK-31110][DOCS][SQL] refine sql doc for SELECT 2020-03-11 16:52:40 -07:00
sql-ref-syntax-qry-select-having.md [SPARK-31110][DOCS][SQL] refine sql doc for SELECT 2020-03-11 16:52:40 -07:00
sql-ref-syntax-qry-select-hints.md [SPARK-28734][DOC] Initial table of content in the left hand side bar for SQL doc 2019-08-18 23:17:50 -07:00
sql-ref-syntax-qry-select-join.md [SPARK-28734][DOC] Initial table of content in the left hand side bar for SQL doc 2019-08-18 23:17:50 -07:00
sql-ref-syntax-qry-select-limit.md [SPARK-31110][DOCS][SQL] refine sql doc for SELECT 2020-03-11 16:52:40 -07:00
sql-ref-syntax-qry-select-orderby.md [SPARK-31110][DOCS][SQL] refine sql doc for SELECT 2020-03-11 16:52:40 -07:00
sql-ref-syntax-qry-select-setops.md [SPARK-28734][DOC] Initial table of content in the left hand side bar for SQL doc 2019-08-18 23:17:50 -07:00
sql-ref-syntax-qry-select-sortby.md [SPARK-31110][DOCS][SQL] refine sql doc for SELECT 2020-03-11 16:52:40 -07:00
sql-ref-syntax-qry-select-subqueries.md [SPARK-28734][DOC] Initial table of content in the left hand side bar for SQL doc 2019-08-18 23:17:50 -07:00
sql-ref-syntax-qry-select-usedb.md [SPARK-28822][DOC][SQL] Document USE DATABASE in SQL Reference 2019-09-19 13:04:17 -07:00
sql-ref-syntax-qry-select-where.md [SPARK-31110][DOCS][SQL] refine sql doc for SELECT 2020-03-11 16:52:40 -07:00
sql-ref-syntax-qry-select.md [SPARK-31110][DOCS][SQL] refine sql doc for SELECT 2020-03-11 16:52:40 -07:00
sql-ref-syntax-qry-window.md [SPARK-28734][DOC] Initial table of content in the left hand side bar for SQL doc 2019-08-18 23:17:50 -07:00
sql-ref-syntax-qry.md [SPARK-31110][DOCS][SQL] refine sql doc for SELECT 2020-03-11 16:52:40 -07:00
sql-ref-syntax.md [SPARK-30691][SQL][DOC] Add a few main pages to SQL Reference 2020-01-31 12:52:22 -06:00
sql-ref.md [SPARK-30691][SQL][DOC] Add a few main pages to SQL Reference 2020-01-31 12:52:22 -06:00
ss-migration-guide.md [SPARK-26154][SS] Streaming left/right outer join should not return outer nulls for already matched rows 2019-11-11 15:47:17 -08:00
storage-openstack-swift.md [SPARK-26918][DOCS] All .md should have ASF license header 2019-03-30 19:49:45 -05:00
streaming-custom-receivers.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
streaming-kafka-0-10-integration.md [MINOR][DOC][SQL][CORE] Fix typo in document and comments 2019-12-21 14:08:58 -08:00
streaming-kafka-integration.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
streaming-kinesis-integration.md [SPARK-30901][DOCS] Fix doc exemple with deprecated codes 2020-02-24 20:16:00 -06:00
streaming-programming-guide.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
structured-streaming-kafka-integration.md [SPARK-30656][SS] Support the "minPartitions" option in Kafka batch source and streaming source v1 2020-01-30 18:14:50 -08:00
structured-streaming-programming-guide.md [MINOR][DOCS] ForeachBatch java example fix 2020-03-03 09:24:33 -06:00
submitting-applications.md [SPARK-28609][DOC] Fix broken styles/links and make up-to-date 2019-08-04 09:42:47 -07:00
tuning.md [SPARK-30803][DOCS] Fix the home page link for Scala API document 2020-02-16 09:55:03 -06:00
web-ui.md [SPARK-30041][SQL][WEBUI] Add Codegen Stage Id to Stage DAG visualization in Web UI 2020-01-18 01:00:45 +08:00

license
Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

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 https://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 correspond 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, Java, Python, R and SQL.

You need to have Ruby 2 (preferably Ruby 2.6+) and Python 3 (preferably Python 3.7+) installed.

You'll also need to install the following libraries:

gem install jekyll:4.0.0 jekyll-redirect-from:0.16.0 rouge:3.15.0

Using rbenv and pyenv

A handy way to install and manage various versions of Ruby and Python is with rbenv and pyenv.

On macOS you can install them with Homebrew:

brew install rbenv pyenv

To activate them, you'll need to run these commands or add them to the end of your .bash_profile:

eval "$(rbenv init -)"
eval "$(pyenv init -)"

You can now use them to install specific versions of Ruby and Python and associate them with the Spark home directory. Whenever you navigate to this directory or any of its subdirectories, these versions of Ruby and Python will be automatically activated.

rbenv install 2.7.0
pyenv install 3.7.6

cd /path/to/spark/root
rbenv local 2.7.0
pyenv local 3.7.6

R Documentation

If you'd like to generate R documentation, you'll need to install R, install Pandoc, and install these libraries:

$ sudo Rscript -e 'install.packages(c("knitr", "devtools", "testthat", "rmarkdown"), repos="https://cloud.r-project.org/")'
$ sudo Rscript -e 'devtools::install_version("roxygen2", version = "5.0.1", repos="https://cloud.r-project.org/")'

Note: Other versions of roxygen2 might work in SparkR documentation generation but RoxygenNote field in $SPARK_HOME/R/pkg/DESCRIPTION is 5.0.1, which is updated if the version is mismatched.

API Documentation

To generate API docs for any language, you'll need to install these libraries:

pip install sphinx==2.3.1 mkdocs==1.0.4 numpy==1.18.1

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 text files 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, Javadoc, Sphinx, roxygen2, MkDocs)

You can build just the Spark scaladoc and javadoc by running ./build/sbt unidoc from the $SPARK_HOME directory.

Similarly, you can build just the PySpark docs by running make html from the $SPARK_HOME/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_HOME/R/create-docs.sh, and the SQL docs can be built by running $SPARK_HOME/sql/create-docs.sh after building Spark first.

When you run jekyll build in the docs directory, it will also copy over the scaladoc and javadoc 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 and javadoc using Unidoc. The jekyll plugin also generates the PySpark docs using Sphinx, SparkR docs using roxygen2 and SQL docs using MkDocs.

NOTE: To skip the step of building and copying over the Scala, Java, Python, R and SQL API docs, run SKIP_API=1 jekyll build. 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. SKIP_SCALADOC indicates skipping both the Scala and Java docs.

Automatically Rebuilding API Docs

jekyll serve --watch will only watch what's in docs/, and it won't follow symlinks. That means it won't monitor your API docs under python/docs or elsewhere.

To work around this limitation for Python, install entr and run the following in a separate shell:

cd "$SPARK_HOME/python/docs"
find .. -type f -name '*.py' \
| entr -s 'make html && cp -r _build/html/. ../../docs/api/python'

Whenever there is a change to your Python code, entr will automatically rebuild the Python API docs and copy them to docs/, thus triggering a Jekyll update.