【flink】RowData copy/clone方式

说明:一般用户常用的是GenericRowData。flink内部则多使用BinaryRowData

方法一、循环解决(不推荐):

代码较为复杂需要根据RowType获取到内部fields的logicalType,再使用RowData.createFieldGetter方法创建fieldGetters

java 复制代码
    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方法

java 复制代码
public RowDataSerializer(RowType rowType) {
...
}

public RowData copy(RowData from) {
...
}
相关推荐
Micro麦可乐8 分钟前
Java常用加密算法详解与实战代码 - 附可直接运行的测试示例
java·开发语言·加密算法·aes加解密·rsa加解密·hash算法
典学长编程13 分钟前
高效学习之一篇搞定分布式管理系统Git !
大数据·git·搜索引擎
掉鱼的猫13 分钟前
Java MCP 鉴权设计与实现指南
java·openai·mcp
努力的小郑27 分钟前
Spring三级缓存硬核解密:二级缓存行不行?一级缓存差在哪?
java·spring·面试
手握风云-32 分钟前
JavaEE初阶第七期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(五)
java·开发语言
发仔12332 分钟前
使用Canal实现MySQL到Elasticsearch数据同步
java·后端
hello早上好1 小时前
Spring AOP:从代理创建到切点匹配
java·后端·spring
psjasf13141 小时前
使用Ideal创建一个spring boot的helloWorld项目
java·spring boot·后端
添乱1 小时前
「Java案例」猜数字游戏
java
添乱1 小时前
「Java案例」求n1-n2内的素数
java