Java本身自带的序列化和反序列化的功能,但是辅助信息占用空间比较大,在序列化对象时记录了过多的类信息。Apache Flink摒弃了Java原生的序列化方法,以独特的方式处理数据类型和序列化,包含自己的类型描述符,泛型类型提取和类型序列化框架。TypeInformation 是所有类型描述符的基类。它揭示了该类型的一些基本属性,并且可以生成序列化器。
TypeInformation 支持以下几种类型:
BasicTypeInfo: 任意Java 基本类型或 String 类型
BasicArrayTypeInfo: 任意Java基本类型数组或 String 数组
WritableTypeInfo: 任意 Hadoop Writable 接口的实现类
TupleTypeInfo: 任意的 Flink Tuple 类型(支持Tuple1 to Tuple25)。Flink tuples 是固定长度固定类型的Java Tuple实现
CaseClassTypeInfo: 任意的 Scala CaseClass(包括 Scala tuples)
PojoTypeInfo: 任意的 POJO (Java or Scala),例如,Java对象的所有成员变量,要么是 public 修饰符定义,要么有 getter/setter 方法
GenericTypeInfo: 任意无法匹配之前几种类型的类
针对前六种类型数据集,Flink皆可以自动生成对应的TypeSerializer,能非常高效地对数据集进行序列化和反序列化。
说说 Flink的序列化如何做的
最新推荐文章于 2025-11-13 06:22:44 发布
Apache Flink为了提高序列化效率,放弃了Java原生的序列化方式,转而采用自己的类型描述符和序列化框架。TypeInformation作为基类,支持BasicTypeInfo、BasicArrayTypeInfo、WritableTypeInfo、TupleTypeInfo、CaseClassTypeInfo和PojoTypeInfo等类型。Flink能够为这六种类型的集合自动生成高效的TypeSerializer,确保数据集的序列化和反序列化性能。
224

被折叠的 条评论
为什么被折叠?



