Right now, Flink code needs to use InternalSerializers to clone RowData. We should just avoid using @Internal classes as Flink is free to break the compatibility in minor releases.
We can clone a RowData into a newly created GenericRowData, that means we don't have to use the complex TypeSerializer ( that is used for copying binary data for BinaryRowData).
Ideally, Flink should provide a public API of RowData#clone/deepCopy, there RowData impl classes can choose the best way of cloning objects.
Some more context is provided by @openinx
#1956 (comment)