feat(connectors): add Apache Spark Structured Streaming source
I maintainer di solito rispondono entro 1 giorno
@rohankumardubey ci sta già lavorando.
Dal 11/9/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Description
Add an Apache Spark Structured Streaming source integration so Spark
applications can consume Apache Iggy streams through the DataFrame and
Dataset APIs.
This integration is listed in #2753 under Stream Processing Integration,
but it does not currently have a dedicated issue or implementation.
The initial scope would include:
- A Spark Structured Streaming source, rather than the legacy DStream
receiver API. - A Java or Scala connector module, following the existing Flink
external-processor structure where reusable. - Mapping Iggy stream partitions to Spark input partitions.
- Representing Iggy offsets through Spark's streaming offset API.
- Committing Iggy progress only after Spark commits the completed
micro-batch. - Exposing the message payload and relevant Iggy metadata, including
stream, topic, partition, offset, and timestamp. - Configuration for server addresses, authentication, TLS, stream,
topic, consumer identity or group, starting offset, and batch limits. - Unit tests, documentation, and an integration example using local
Spark and Iggy.
The initial implementation would not include a Spark sink, legacy
DStream support, or continuous-processing mode. Those can be addressed
separately after the source semantics are validated.
Affected area/component
Connectors and Java SDK.
Proposed solution
Implement a Spark Data Source V2 micro-batch source, potentially under:
foreign/java/external-processors/iggy-connector-spark
The connector would implement Spark's MicroBatchStream integration
surface. Iggy partitions would be represented as Spark input
partitions, and Iggy offsets would be represented as Spark streaming
offsets. Spark checkpointing and the micro-batch commit callback would
be used to coordinate recovery and offset advancement.
The existing Flink connector can provide reusable project structure,
configuration, Java SDK, serialization, testing, and example patterns.
The delivery and recovery guarantees should be explicitly documented
and tested, particularly around retries after a Spark executor,
application, or Iggy connection failure.
Alternatives considered
- Using Iggy's Kafka compatibility layer. This would be less native and
would couple the integration to Kafka-compatible behavior. - Implementing a legacy Spark Streaming DStream receiver. Structured
Streaming is Spark's current integration model and provides the
appropriate offset and checkpoint interfaces. - Using a raw TCP or socket source. This would not provide the necessary
partition and offset semantics.
Contribution
I am willing to implement this after the scope and design are confirmed.
Affected area / component
No response
Proposed solution
No response
Alternatives considered
No response
Contribution
- I'm willing to submit a pull request to implement this feature
Good first issue
- I think this could be a good first issue for a new contributor
- Lingua principale
- Rust
- Stelle
- 5.2k
- Fork
- 502
- Merge medio
- 3g 11h
- PR unite (30g)
- 143
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/iggy
-
go good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
HTTP client treats a consumer group as a plain consumerForse già presa @mohitduhan19 l’ha presa 18 giorni fa. Apertabug rust server
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
apache/iggy#4408 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Add the fail-fast connection option to the Rust and Python quick-startsForse già presa @QIW9 l’ha presa 6 giorni fa. Apertadocs good first issue
Difficoltà 1/5 1-3 ore Idoneità per principianti 92/100
apache/iggy#4261 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
bug python sdk
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
apache/iggy#3748 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Python examples: add a sink data producerForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertagood first issue python
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
Issue simili
-
example
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
rust-lang-nursery/rust-cookbook#954 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 70/100
OpenZeppelin/openzeppelin-relayer#967 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
DecisionOutcome::label() / n_dosed(): engine-side mapping so downstream needs no wildcard armAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
src/runs.rs:1987: a missing --source-run-id now answers 400 "Source run ... does not exist", not 404Apertanightly-audit
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
antithesishq/snouty#602 ·
I maintainer di solito rispondono entro 1 giorno