Skip to content

Add storm-iceberg module: a Trident sink for Apache Iceberg#8950

Draft
GGraziadei wants to merge 5 commits into
apache:masterfrom
GGraziadei:iceberg-storm-trident
Draft

Add storm-iceberg module: a Trident sink for Apache Iceberg#8950
GGraziadei wants to merge 5 commits into
apache:masterfrom
GGraziadei:iceberg-storm-trident

Conversation

@GGraziadei

Copy link
Copy Markdown
Member

What is the purpose of the change

ToDo

How was the change tested

ToDo

New external module writing Trident batches to Apache Iceberg tables
directly from a topology, with exactly-once semantics.

Each batch is committed in a single Iceberg transaction that atomically
appends the data files and records the transaction id in the table
property storm.trident.<topologyName>.<partitionIndex>.last-committed-txid,
so replayed batches are detected and skipped even across worker crashes
and commits whose outcome was unknown to the writer.

Includes:
- IcebergOptions: catalog properties passed verbatim to Iceberg's
  CatalogUtil.buildIcebergCatalog, so any catalog works with its
  standard keys; file format, target file size and table auto-creation.
- RecordMapper with a field-name based default doing the standard
  primitive conversions; required columns without a value fail loudly.
- Partitioned tables through Iceberg's fanout writer, one open data file
  per partition.
- Per-batch table refresh, so schema and partition spec evolution is
  picked up without restarting the workers.
- Metrics-v2 instrumentation: records written, data files and bytes
  committed, commit latency, commit failures, skipped replays.
- A shutdown hook releasing the catalog client, since Trident's State
  has no lifecycle callback.
- Documentation and two runnable example topologies, unpartitioned and
  partitioned.
…dent

# Conflicts:
#	storm-dist/binary/final-package/src/main/assembly/binary.xml
@GGraziadei
GGraziadei requested review from reiabreu and rzo1 July 26, 2026 10:45
@GGraziadei GGraziadei added this to the 3.1.0 milestone Jul 26, 2026
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.

1 participant