The Apache Iceberg 129 sink began as Tabular's connector, written by Bryan Keller, and has been built in the Iceberg repository since 1.7.0 (November 2024). Every task writes files for the records it consumes; one task also runs the coordinator, and they talk over a control topic (control-iceberg). At each interval the coordinator sends START_COMMIT; each task closes its files and answers DATA_WRITTEN, committing its consumer offsets in the same Kafka 129 transaction (KIP-447); the coordinator then makes one Iceberg commit and stores its control-topic offsets in the snapshot summary. A restarted coordinator never commits files twice, and a task that dies before answering has committed no offsets, so its records are read again: exactly-once landing.
Maven 129 Central carries the sink's jars but not the runtime zip of the Iceberg build, so streaming/pom.xml collects iceberg-kafka-connect 1.12.0, hadoop-common and the AWS 24 bundle into one plugin folder (83 jars) with Maven's dependency:copy-dependencies. streaming/kafka.yaml runs two apache/kafka:4.3.1 containers: the broker as in Kafka 4.x in Docker, and a one-worker Connect cluster (connect-distributed.sh, REST port 31083) with the plugin folder on its plugin.path.