By default, each streaming query generates a unique group ID for reading data ( ensuring it's own its own consumer group ) . In scenarios where you'd want to specify it (authz etc ) , it is not recommended to have two streaming applications specify the same groupid. Spark keeps track of Kafka offsets internally and doesnโt commit any offset.
In any case, for sources that doesn't support exactly once behaviour, with delta you could achieve idempotency via MERGE