Aren't the alternatives you mentioned - icerberg and duckdb - both storage solutions while spark is a way to express distributed compute? I'm a bit out of touch with this space, is there a newer way to express distributed compute?
There are some examples[0] of enabling DuckDB to manage distributed workloads, but these are pretty experimental.