【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) {
...
}
相关推荐
C雨后彩虹3 分钟前
CAS 在 Java 并发工具中的应用
java·多线程·并发·cas·异步·
范纹杉想快点毕业14 分钟前
嵌入式系统架构之道:告别“意大利面条”,拥抱状态机与事件驱动
java·开发语言·c++·嵌入式硬件·算法·架构·mfc
2501_9403152619 分钟前
【无标题】2390:从字符串中移除*
java·开发语言·算法
半聋半瞎22 分钟前
Flowable快速入门(Spring Boot整合版)
java·spring boot·后端·flowable
IT研究所27 分钟前
信创浪潮下 ITSM 的价值重构与实践赋能
大数据·运维·人工智能·安全·低代码·重构·自动化
AI职业加油站28 分钟前
Python技术应用工程师:互联网行业技能赋能者
大数据·开发语言·人工智能·python·数据分析
散峰而望31 分钟前
【算法竞赛】树
java·数据结构·c++·算法·leetcode·贪心算法·推荐算法
深蓝海域知识库36 分钟前
深蓝海域中标大型机电企业大模型知识工程平台项目
大数据·人工智能
Gain_chance36 分钟前
32-学习笔记尚硅谷数仓搭建-DWD层首日数据装载脚本及每日数据装载脚本
大数据·数据仓库·hive·笔记·学习
sheji341638 分钟前
【开题答辩全过程】以 基于hadoop的空气质量数据分析及可视化系统为例,包含答辩的问题和答案
大数据·hadoop·数据分析