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

【Flink】DataStream API使用之Flink支持的数据类型

Flink的使用过程中,我们的数据都是定义好的 UserBehavior 类型,那还有没有其他更灵活的类型可以用呢?Flink 支持的数据类型到底有哪些?

1. Flink 的类型系统

Flink 作为一个分布式处理框架,处理的是以数据对象作为元素的流。Flink 使用类型信息 (TypeInformation) 来统一表示数据类型,并为每个数据类型生成特定的序列化器、反序列化器和比较器。对于复杂的数据类型,Flink 可能不支持,因此需要使用类型推断机制。此外,Flink 还支持自定义类型信息,以便更好地处理不同类型的数据。

2. Flink 支持的数据类型

常见的 Java 和 Scala 数据类型,Flink 都是支持的。Flink 在内部对不同的类型支持进行了划分,这些类型可以在 Types 工具类中找到:

  • 基本类型: 所有 Java 基本类型及其包装类,再加上 Void、String、Date、BigDecimal 和 BigInteger。
  • 数组类型:基本类型数组(PRIMITIVE_ARRAY)和对象数组(OBJECT_ARRAY)
  • 复合数据类型:
    • Java 元组类型(TUPLE):这是 Flink 内置的元组类型,是 Java API 的一部分。最多25 个字段,也就是从 Tuple0~Tuple25,不支持空字段,
    • Scala 样例类及 Scala 元组:不支持空字段
    • 行类型(ROW):可以认为是具有任意个字段的元组,并支持空字段
    • POJO:Flink 自定义的类似于 Java bean 模式的类
  • 辅助类型:Option、Either、List、Map等
  • 泛型类型(GENERIC):

Flink 对 POJO 类型的要求如下:

  • 类是公共的(public)和独立的(standalone,也就是说没有非静态的内部类);
  • 类有一个公共的无参构造方法;
  • 类中的所有字段是 public 且非 final 的;或者有一个公共的 getter 和 setter 方法,这些
    方法需要符合 Java bean 的命名规范。

3. 类型提示(Type Hints)

Flink提供了显示注册类型信息的方式,通过.returns()实现。

.map(word -> Tuple2.of(word, 1L))
.returns(Types.TUPLE(Types.STRING, Types.LONG));

如果是复杂类型信息可以这样使用:

returns(new TypeHint<Tuple2<Integer, SomeType>>(){})
http://www.lryc.cn/news/68339.html

相关文章:

  • QT实现固高运动控制卡示波器
  • 洛谷P1157详解(两种解法,一看就会)
  • JavaScript异步编程和回调
  • Qt开发笔记(Qt5.9.9下载安装环境搭建win10)
  • 使用Plist编辑器——简单入门指南
  • Python常用的开发工具合集
  • 机器学习之线性回归
  • 中国系统正式发声!所有用户永久免费,网友:再见了,CentOS!
  • Oracle数据库坏块类故障
  • andorid之摄像头驱动流程--MTK平台
  • Android9.0 iptables用INetd实现屏蔽ip黑名单的实现
  • 介绍一下json
  • DI依赖注入环境
  • 《程序员面试金典(第6版)》面试题 16.18. 模式匹配(暴力破解 + 剪枝)
  • 一天吃透SpringCloud面试八股文
  • java生成图片缩略图
  • 《统计学习方法》——隐马尔可夫模型(下)
  • Liunx top 命令详解
  • 基于 SpringBoot 的医院固定资产系统
  • 【企业信息化】第2集 免费开源ERP: Odoo 16 销售管理系统
  • 浅谈数据治理
  • Matlab入门教程003|MATLAB变量|MATLAB命令
  • 【啃书C++Primer5】-编写一个简单C++程序
  • GoView 是一个Vue3搭建的低代码数据可视化开发平台
  • 【面试篇】Redis持久化面试题
  • 哈工大软件过程与工具作业2
  • SDN控制器三平面(软件定义网络、OOB)
  • 嘉兴桐乡会计考证实操-考初级会计真的有用吗?
  • 约翰霍普金斯大学诺奖得主涉嫌造假,撤回5篇PNAS论文
  • React的表单数据绑定