说明:一般用户常用的是GenericRowData。flink内部则多使用BinaryRowData。
方法一、循环解决(不推荐):
代码较为复杂需要根据RowType获取到内部fields的logicalType,再使用RowData.createFieldGetter方法创建fieldGetters。
    public static void copyRowData(RowData input, GenericRowData output, List<RowData.FieldGetter> fieldGetters) {for (int i = 0; i < input.getArity() && i < output.getArity(); i++) {if (input instanceof GenericRowData) {output.setField(i, ((GenericRowData) input).getField(i));} else {Preconditions.checkArgument(fieldGetters != null);Object value = fieldGetters.get(i).getFieldOrNull(input);output.setField(i, value);}}}方法二、使用RowDataSerializer(推荐)
使用RowDataSerializer.copy方法
public RowDataSerializer(RowType rowType) {
...
}public RowData copy(RowData from) {
...
}