Ломаем Iceberg-таблицу🫠 Представьте, у вас есть айсберг таблица из 3 полей, которая управляется HMS. Вы удаляете из середины 2е поле, но вдруг появляется ошибка: The following columns have types incompatible with the existing columns in their respective positions Несовместимые типы, но почему? Мы же знаем, что айсберг следит за своими полями по id, и если мы удалили поле с id=2, то поле с id=3 должно таким и остаться. Или нет? Оказывается, у айсберга и hms разные механизмы эволюции схемы. С айсбергом мы правы, он следит за id самой колонки. Но вот hms проверяет схему на основе индекса🙂 Когда мы удалили столбец из середины, в hms все типы сдвинулись. И если поле2 было int, а поле3 - string, то после удаления hms думает, что мы кастуем string -> int, и падает Сама оф дока айсберга выделяет этот момент как «Hive Catalog Limitation» и рекомендует отключить свойство: `hive.metastore.disallow.incompatible.col.type.changes=false` Теперь эволюция схемы на совести айсберга, работаем дальше🙌 @data_engineerette