BigData / Apache Iceberg Interview questions
What are field IDs in Iceberg, and why do they matter?
A field ID is a permanent, stable integer identifier assigned to every column (and nested field) in an Iceberg table's schema when it's first created, and this ID — not the column's name or physical position — is what Iceberg actually uses internally to identify a field across schema changes and different data files.
This matters because column names and positions can both change over a table's lifetime — a column might be renamed, or new columns might be inserted in the middle of a schema — but a field's ID never changes and is never reused, even if the corresponding column is eventually dropped, which means Iceberg can always correctly correlate a value in an old Parquet file with the right logical field regardless of what renaming or reordering has happened since that file was written.
This is a meaningful architectural difference from formats or systems that match columns by name or position at read time: Iceberg's field-ID-based approach is what makes rename operations essentially free (they're just a metadata change, not a data rewrite) and what prevents the class of bug where a column rename or reorder silently causes old data to be misread under the new schema.
More Related questions...