Flink的序列化如果做的?

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,能非常高效地對 數據集進行序列化和反序列化。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章