Skip to content

[docs] Add HTTP Gateway lakehouse quickstart - #4231

Open
pranavshuklaa wants to merge 14 commits into
apache:mainfrom
pranavshuklaa:issue-4221-http-gateway-quickstart
Open

[docs] Add HTTP Gateway lakehouse quickstart#4231
pranavshuklaa wants to merge 14 commits into
apache:mainfrom
pranavshuklaa:issue-4221-http-gateway-quickstart

Conversation

@pranavshuklaa

Copy link
Copy Markdown

Purpose

Linked issue: close #4221

Add an end-to-end quickstart showing how to build a real-time lakehouse using the Fluss HTTP Gateway, Fluss, Flink, Paimon, and RustFS.

Brief change log

  • Add a Docker Compose setup including the Fluss Gateway.
  • Document building the Gateway image locally.
  • Show how to create a datalake-enabled Fluss table through the Gateway REST API.
  • Show how to ingest records through the Gateway HTTP API.
  • Show how to start the Lakehouse Tiering Service and tier data to Paimon.
  • Demonstrate querying tiered data through $lake and $lake$snapshots.
  • Demonstrate Union Read for the current unified Fluss + Paimon view.
  • Document Gateway preview limitations, write-result handling, readiness, and cleanup.

Tests

  • Verified the Gateway Docker image builds successfully in GitHub Actions.
  • Validated the Docker Compose configuration and the documented Gateway REST API workflow during development.
  • Verified the Fluss Docker build and quickstart environment setup through GitHub Actions.

API and Format

No API or storage format changes.

Documentation

Adds a new HTTP Gateway quickstart for a real-time lakehouse and documents the existing Gateway REST API, Fluss datalake integration, Flink Union Read, and Paimon tiering workflow.

@pranavshuklaa pranavshuklaa changed the title Issue 4221 http gateway quickstart [docs] Add HTTP Gateway lakehouse quickstart Sep 3, 2026
@pranavshuklaa

Copy link
Copy Markdown
Author

Could someone please review this PR when you get a chance? It adds the HTTP Gateway lakehouse quickstart for #4221. Thanks!!

@pbanakar pbanakar left a comment

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.

Hi @pranavshuklaa, thanks for the PR! left some comments

@@ -0,0 +1,490 @@
---
title: Real-Time Lakehouse via the HTTP Gateway
sidebar_position: 3

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.

check if this conflicts with an existing quickstart. Our page_user_profile.md is at 4 and lakehouse.md and security.md both using sidebar_position 2 could you correct it? currently no file at 3?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Okay so in my latest commit I am fixing the underlying collision rather than just slotting around it. Renumbered so every quickstart page has a unique, sequential position: flink.md=1, lakehouse.md=2, security.md=3 (was 2), this page gateway-lakehouse.md=4 (was 3), page_user_profile.mdx=5 (was 4). Pushed as part of this PR.

(however, Compose v1 might work with a few adaptions).
:::

### Build the Gateway image

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.

every other quickstart uses a pre-built Docker Hub image. This one requires the user to have the Fluss source repo checked out locally and run docker/fluss-gateway/build.sh. That's not a quickstart experience that's a dev setup. The guide should either wait for a published Gateway image or clearly state this is a developer preview requiring a source build upfront, and this feature is for 1.0v that is not released yet

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Yeah agreed. Added a statement that this is a developer preview requiring a source build. I think this solves it:

This guide covers a feature shipping in the upcoming fluss 1.0 release.
A pre-built Docker Hub image will be available at GA - until then,
building it locally takes one extra step: run the script below from the
root of your ...

### Quitting SQL Client

```sql title="Flink SQL"
quit;

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.

all other Fluss quickstarts use exit;

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Fixed this. switched to exit; to match the convention in the other quickstarts.

@beryllw beryllw left a comment

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.

Could we also link to this quickstart from the Gateway overview so readers can easily find the end-to-end example?

REST API instead of Flink SQL. You'll create a datalake-enabled table with
`curl`, ingest JSON records with `curl`, then use Flink SQL only to run the
Lakehouse Tiering Service and query the unified real-time + historical data
(Union Read).

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.

Could we introduce a concrete application scenario and clarify that the application writes through HTTP without separately writing to Paimon?

```

```sql title="Flink SQL"
SELECT order_id, customer, amount_cents, status FROM orders$lake;

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.

Could we query orders before orders$lake to highlight that querying does not need to wait for tiering?

performance, but reflecting only what's been tiered so far.

```sql title="Flink SQL"
SELECT order_id, customer, amount_cents, status FROM orders;

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.

Could we include expected SQL results, lake row counts, and a small comparison of the two query forms?

starts, not once it's actually accepting connections, so the first
`/ready` call (or the first database-creation call below) can briefly
return an error or HTTP 503 right after `docker compose up`. Retry after a
few seconds if that happens.

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.

Could we wait for a successful metadata request with a timeout? /ready alone does not verify Fluss connectivity.

Enter the Flink SQL CLI container:

```shell
docker compose run sql-client

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.

Could we use flink run -d and docker compose run --rm sql-client, and explain that the non-interactive SQL client container may exit normally?

After finishing the tutorial, run `exit` to exit the Flink SQL CLI
container.

## Preview limitations

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.

Could we add a short takeaway explaining which application-side components are no longer needed, while clarifying that the shared Tiering Service still runs on Flink?

@beryllw

beryllw commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

I put together a similar end-to-end demo earlier: HTTP Gateway lakehouse quickstart. Feel free to use it as a reference.

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.

[docs] Add an HTTP Gateway quickstart for a real-time lakehouse

3 participants