encoder.createSe(De)rializer посмотри какой он генерит там на основе экспрешонов твоего кодека функцию которая будет уметь T => InternalRow (строит план а потом .execute его) я в самую глубину не ходил конечно) но это уже медленно звучит)
гдето была ищща у них в жире где рибята комплейнят по поводу медленной и специфичной реализации коедков (дорогие создавать, не тредсейф по дизайну что делает невозможным единственный инстанс пер ехекутор)