Skip to content

[docs] xtable-spark-runtime README + Spark quickstart docs#847

Open
vinishjail97 wants to merge 4 commits into
apache:mainfrom
vinishjail97:spark-runtime-docs
Open

[docs] xtable-spark-runtime README + Spark quickstart docs#847
vinishjail97 wants to merge 4 commits into
apache:mainfrom
vinishjail97:spark-runtime-docs

Conversation

@vinishjail97

Copy link
Copy Markdown
Contributor

What

Documentation for the xtable-spark-runtime bundle (added in #843):

  • New docs page Run XTable on Apache Spark (website/docs/spark-runtime.md) — a spark-submit quickstart with worked examples, the full CLI option table, a source/target format matrix, and Spark version compatibility.
  • Module README (xtable-spark-runtime/README.md) — build, usage, compatibility, and how to run the bundle validation IT.
  • Linked the new page from the Installation page and the docs sidebar (Quick Start).

Spark quickstart (excerpt)

$SPARK_HOME/bin/spark-submit \
  --class org.apache.xtable.spark.XTableSparkSync \
  --master 'local[*]' \
  xtable-spark-runtime_2.12-<version>.jar \
  --basepath /path/to/hudi_table \
  --sourceformat HUDI \
  --targets ICEBERG,DELTA

The docs also cover Spark version compatibility: Hudi/Iceberg sync is Spark-free, and a Delta source/target auto-switches from delta-core (Spark 3.4) to the Spark-free Delta Kernel on Spark 3.5+.

Note on merge order

This documents the xtable-spark-runtime module, which currently lives on the #843 branch (targeting branch-0.4) and is not yet on main. Intended to merge after the 0.4.0 release, once the module lands on main.

🤖 Generated with Claude Code

Documents the xtable-spark-runtime bundle: a spark-submit quickstart with
examples, the CLI options, a source/target format matrix, and Spark 3.4/3.5
compatibility (Delta auto-switches to the Spark-free Delta Kernel on 3.5+).

Adds a "Run XTable on Apache Spark" docs page (linked from Installation and
the sidebar) and a module README.

Note: depends on the xtable-spark-runtime module (PR apache#843); intended to merge
after the 0.4.0 release once the module lands on main.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
vinishjail97 and others added 3 commits July 21, 2026 11:11
…-datasetconfig, TPC-DS example

- Add "Adding to an existing Spark job" section: drop the thin bundle on an
  existing cluster's classpath (engines are provided) and run XTableSparkSync
  against a table the job already writes to add other formats; no data rewrite.
- Document the --datasetconfig multi-table mode and add it to the options table
  (mutually exclusive with --basepath/--sourceformat/--targets).
- Add examples/tpcds-dataset.yaml: a 24-table TPC-DS Hudi -> Iceberg,Delta config.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rename "bundle jar" to "runtime jar" throughout to match the module name
and Iceberg's convention; keep "(shaded, relocated)" once in the developer
README. Drop em-dashes from prose.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Normalize the ASF header to the canonical wrapping in style/text-license-header
and prefix the example comment with ## so Spotless treats it as content instead
of folding it into the license-header region.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

## Supported formats

Paimon and Parquet are read-only sources (there is no corresponding write target).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The bundle IT covers Hudi↔Iceberg and Hudi↔Delta, but the matrix also marks Iceberg↔Delta and Paimon/Parquet sources as supported. Are those validated somewhere, or is this the core capability matrix rather than what this bundle is tested for? A line distinguishing the two would help.

Separately, the README describes the IT as "one case per direction across Hudi, Iceberg, and Delta" — that reads a bit broader than the actual directions(), which has no Iceberg↔Delta case.


| Spark version | Hudi / Iceberg | Delta implementation |
| --- | :---: | --- |
| 3.4.x | ✅ | Delta Standalone (`delta-core`) |

@kroushan-nit kroushan-nit Jul 22, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor naming thing — the delta-core in brackets is unambiguous, but "Delta Standalone" usually names io.delta:delta-standalone, a separate JVM library now deprecated in favor of Delta Kernel. The 3.4 path here is delta-core, so is the "Delta Standalone" label intentional? Delta's own naming is confusing (delta-core was renamed delta-spark in 3.0), so feel free to ignore if this is the convention we want.


| Spark version | Hudi / Iceberg | Delta |
| --- | :---: | --- |
| 3.4.x | ✅ | Delta Standalone (`delta-core`) |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same minor naming question as the docs page — "Delta Standalone" is a separate (deprecated) artifact from the delta-core in brackets.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants