Row-level changes need format-version 2
UPDATE, DELETE, and MERGE all change existing rows. To do that efficiently, Iceberg needs format-version 2 (or later), which adds delete files — small side files that mark rows as removed without rewriting every data file. Version 1 tables are append-only.
-- opt a table into row-level operations
ALTER TABLE db.orders SET TBLPROPERTIES ('format-version' = '2');
-- (new tables: set it at CREATE time, as in Module 1)
-- CREATE TABLE db.orders (...) USING iceberg TBLPROPERTIES ('format-version'='2');IcebergSparkSessionExtensions from setup — without it, Spark's parser rejects MERGE INTO and row-level UPDATE/DELETE on a data-lake table entirely.