Skip to main content
You will create:
  • an HTTP source table;
  • an Iceberg sink table; and
  • a SQL pipeline that connects them.

Prerequisites

You need:
  • access to a running Ingest Engine cluster;
  • the Kubernetes namespace and name of that cluster;
  • an Iceberg REST catalog;
  • an S3 or S3-compatible object store; and
  • kubectl access to the cluster.
The example uses an Iceberg REST catalog and S3-compatible storage. For other catalog and storage combinations, see Apache Iceberg.
Replace my-namespace, my-cluster, and every value enclosed in <...> before applying the manifests. Kubernetes does not substitute shell variables in YAML files. Do not commit real tokens or storage credentials to source control.

Step 1: Create the HTTP Source

Save this complete manifest as events-source.yaml:
Apply it:
The important source settings are: The source schema and format are required. Production clusters also require explicit capacity, authentication, and bad-data settings, all of which are included above.

Step 2: Create the Iceberg Sink

Save this complete manifest as events-sink.yaml:
If your REST catalog is anonymous, remove the auth block. When using AWS S3 with workload identity or the default credential chain, remove the static access keys and any custom endpoint settings that are not needed. Apply the sink and wait until both tables report Ready:
The important sink settings are: The sink schema must match the columns and types produced by the pipeline query.

Step 3: Create the Pipeline

Save this complete manifest as events-pipeline.yaml:
The SQL names are the config.name values from the two table manifests: events_source and events_sink. Apply the pipeline:
parallelism: 1 is a safe starting point for this HTTP ingestion pipeline. The checkpoint interval is expressed in microseconds, so 10000000 means 10 seconds.

Step 4: Send an Event

Build the public source URL from the hostname assigned to route: events and the configured path: /events:
Send an event whose fields match the source schema:
A successful request returns HTTP 200, which means the event was accepted for processing. It does not confirm that a downstream checkpoint has completed. Iceberg commits occur during checkpoints, so table visibility can lag behind the HTTP response.

Step 5: Verify the Pipeline

Check the resource phases:
For details about a resource that is not ready:
Common HTTP responses are:

Clean Up

Delete the pipeline before deleting its tables:

Continue

Continue with Core Concepts to understand how profiles, tables, pipelines, and streaming execution fit together.

Keep going across e6data

Query the tables you just wrote

Register the Iceberg catalog in Query Engine and run SQL on the fresh data.

Operate your pipelines

Configuration, observability and metrics for running pipelines.
Last modified on October 1, 2026