当前位置: 首页 > news >正文

flink api-datastream api-transformation算子

Flink Transformation算子是DataStream API中用于数据转换的核心操作,主要分为以下几类:

基本转换算子

‌Map‌:一对一转换,对每个元素应用函数并输出新元素。例如将字符串转为大写或提取日志字段。
‌FlatMap‌:一对多转换,将单个元素拆分为零个或多个元素,常用于文本分词或嵌套结构展开。
‌Filter‌:根据条件过滤元素,仅保留满足布尔表达式的数据。

分组与聚合算子

KeyBy‌:按指定Key哈希分区,为聚合操作提供数据局部性支持。
Reduce‌:滚动聚合,基于前一次结果和当前元素计算新值,如累加或极值统计。
Window‌:基于时间或数量的窗口操作,支持滚动、滑动等窗口类型,需配合聚合函数使用。

多流操作算子

Union‌:合并多个同类型DataStream,不消除重复数据。
Connect‌:连接不同类型DataStream,生成ConnectedStreams,后续可通过CoMap/CoFlatMap处理。
‌Split/Select‌:将流按条件拆分为多个子流,再通过Select选择特定子流。

物理分区算子

Shuffle‌:随机均匀重分布数据,避免倾斜。
‌Rebalance‌:轮询分配数据到下游任务,实现负载均衡。
Broadcast‌:将数据广播到所有并行任务。

特殊转换算子

Project‌(仅限Tuple类型):选择字段子集,类似SQL的SELECT操作。
‌Iterate‌:迭代反馈流,用于实现循环逻辑。

例子

数据对象定义

package com.atguigu.wc.pojo;import java.util.Objects;public class WaterSensor {// 水位传感器类型public String id;// 传感器记录时间戳public Long ts;// 水位记录public Integer vc;public WaterSensor(){}public WaterSensor(String id, Long ts, Integer vc) {this.id = id;this.ts = ts;this.vc = vc;}public String getId() {return id;}public void setId(String id) {this.id = id;}public Long getTs() {return ts;}public void setTs(Long ts) {this.ts = ts;}public Integer getVc() {return vc;}public void setVc(Integer vc) {this.vc = vc;}@Overridepublic String toString() {return "WaterSensor{" +"id='" + id + '\'' +", ts=" + ts +", vc=" + vc +"}";}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;WaterSensor that = (WaterSensor) o;return  Objects.equals(id, that.id) && Objects.equals(ts, that.ts) && Objects.equals(vc, that.vc);}@Overridepublic int hashCode() {return Objects.hash(id, ts, vc);}}

基本转换算子

‌Map‌

// 方式一:传入匿名类,实现MapFunction
waterSensorDataStreamSource.map(new MapFunction<WaterSensor, String>() {@Overridepublic String map(WaterSensor waterSensor) throws Exception {return waterSensor.id;}
}).print();// 方式二:传入MapFunction实现类
waterSensorDataStreamSource.map(new UserMap()).print();

‌FlatMap‌

public class TransFlatMap {public static void main(String[] ar
http://www.dtcms.com/a/423819.html

相关文章:

  • 自己做的网站如何发布什么公司可以做网站等级保护
  • 怎么做网站自动响应新手做淘宝客网站教程
  • 深度解析ZStack Cloud v5.4.0 LTS 基础架构三大核心突破
  • markitdown,面向AI输入的文档转换工具
  • C4D储卡器底部塑料壳建模之内部结构详解
  • 泉州网站搭建统计局网站集约化建设方案
  • Hanlp 配置
  • 网站开发实例拍拍网站源码
  • 湖北省建设厅信息网站模板建设网站
  • 计算机网络4
  • 【硬科普】什么是克尔效应
  • Zemax:初学者的混合模式
  • 烟台小学网站建设怎么通过网站打广告
  • 广州途道信息科技有限公司:以创新与责任,铸就教育机器人领军品牌
  • 汇世界迎全运 广州国际社区运动嘉年华举行,BOSMA博冠现场展示并分享与科技全运的故事
  • 电子商务网站建设域名广州黄埔做网站
  • 基于单片机的盲人智能水杯(论文+源码)
  • 广州网站设计皆赞乐云践新装修公司网站php源码
  • Java SE “语法”面试清单(含超通俗生活案例与深度理解)
  • 重庆网站建设哪里比较好呢深圳网站制作联系电话
  • [hcip 16]isis summary filter
  • Spring Boot 自动配置之 Spring transaction
  • 男女直接做的视频网站莱芜网络营销
  • 网站锚点成品网站源码是1688吗
  • 软件工程作业-报告1
  • 大模型微调定义模板 高级版—BYOT解析(108)
  • 处理nginx Sweet32攻击漏洞问题
  • Nginx配置全解析:从入门到精通
  • leetcode 查找算法
  • Java字符串操作实战指南