【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) {
...
}
相关推荐
aq55356001 小时前
编程语言三巨头:汇编、C++与PHP大比拼
java·开发语言
我是无敌小恐龙2 小时前
Java SE 零基础入门Day01 超详细笔记(开发前言+环境搭建+基础语法)
java·开发语言·人工智能·opencv·spring·机器学习
深圳市九鼎创展科技2 小时前
MT8883 vs RK3588 开发板全面对比:选型与场景落地指南
大数据·linux·人工智能·嵌入式硬件·ubuntu
心态与习惯2 小时前
Julia 初探,及与 C++,Java,Python 的比较
java·c++·python·julia·比较
一叶飘零_sweeeet3 小时前
优秀文章合集
java
zopple3 小时前
ThinkPHP5.x与3.x核心差异解析
java·python·php
渣渣盟3 小时前
Flink事件时间与窗口操作实战指南
大数据·flink·scala
南境十里·墨染春水3 小时前
C++ 笔记 thread
java·开发语言·c++·笔记·学习
南境十里·墨染春水3 小时前
C++ 笔记 高级线程同步原语与线程池实现
java·开发语言·c++·笔记·学习
Yyyyy123jsjs3 小时前
如何选用外汇接口实现稳定数据抓取?
大数据·python·金融