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

Flink学习(四)-数据管道 ETL

一、状态转换

map()

只适用于一对一的转换,即对每个进入算子的流元素,map() 将仅输出一个转换后的元素。

flatmap()

可以输出任意数量的元素,也可以一个都不发。

二、Keyed Streams

keyBy()

相当于 sql 中的 group by,通过 shuffle 来为数据流进行重新分区。

.keyBy(object -> object.key)

能做作为 keyBy 的条件:

  1. 结果是确定的;
  2. 实现了 hashCode 和 equals 方法

因此,元组和 POJO 来组成键,只要他们的元素遵循上述条件。

三、有状态的转换

1)Flink 管理状态的优势

  • 本地性: Flink 状态是存储在使用它的机器本地的,并且可以以内存访问速度来获取
  • 持久性: Flink 状态是容错的,例如,它可以自动按一定的时间间隔产生 checkpoint,并且在任务失败后进行恢复
  • 纵向可扩展性: Flink 状态可以存储在集成的 RocksDB 实例中,这种方式下可以通过增加本地磁盘来扩展空间
  • 横向可扩展性: Flink 状态可以随着集群的扩缩容重新分布

 2)valueState

对于每个键 ,Flink 将存储一个单一的对象

open() 方法通过定义 ValueStateDescriptor<?> 建立了管理状态的使用。构造器的参数定义了这个状态的名字(“name”),并且为如何序列化这些对象提供了信息.

3)清理状态

在无限增长的键中,必须要清除不再使用的状态。

使用 key.clear()清理状态。

4)connected Streams

额外增加一组控制流,来控制某些转换,例如数据流的阈值、规则或者其他参数等。

要求:两个流的键一致,即以相同的方式进行分区。

http://www.lryc.cn/news/335146.html

相关文章:

  • Python可视化之Matplotlib
  • ChatGPT全方位解析:如何培养 AI 智能对话技能?
  • [C++/Linux] UDP编程
  • 深入探索Linux的lsof命令
  • flowable 想改变正在运行的任务,实例版本为最新,需要改哪些表
  • 统计各位数字都不同的数字个数 II
  • Taro框架中的H5 模板基本搭建
  • gitea详细介绍
  • 应用性能分析系统SkyWalking的安装及使用详解
  • 服务器远程桌面连接不上怎么办?
  • C++之STL的algorithm(8)之适配器(bind等)整理
  • 部分国企笔试总结
  • 《QT实用小工具·二十二》多种样式导航按钮控件
  • 不定长顺序表
  • 5.网络编程-socker(golang版)
  • 网格矢量如何计算莫兰指数
  • 《containerd原理剖析与实战》大模型时代下如何学习云原生
  • 【实用工具】使用飞书机器人监控工程日志
  • NIKKE胜利女神PC怎么设置中文 手把手教你设置中文教程
  • 【leetcode面试经典150题】2.移除元素(C++)
  • 实现几何对象按照一定距离向外缓冲
  • 现代深度学习模型和技术
  • go的orm框架-Gorm
  • 嵌入式开发学习---(部分)数据结构(无代码)
  • ChatGPT 之联盟营销
  • 1.k8s简介
  • go包下载时报proxyconnect tcp: dial tcp 127.0.0.1:80: connectex错误的解决方案
  • Vaadin框架是如何处理前后端交互的?列举几个Vaadin中常用的UI组件,并描述它们的作用。如何使用Vaadin的布局管理器来构建复杂的用户界面?
  • 动态属性的响应式问题和行内编辑的问题
  • 微信小程序第六次课(模块化和绑定事件)