flink学习系列--基础知识学习(四)

前言

这一讲将介绍一下序列化机制和过程函数(processfunction)。

序列化机制

使用 Flink 编写处理逻辑时,新手总是容易被林林总总的概念所混淆:

 为什么 Flink 有那么多的类型声明方式?
 BasicTypeInfo.STRING_TYPE_INFO、Types.STRING 、Types.STRING() 有何区别?
 TypeInfoFactory 又是什么?
 TypeInformation.of 和 TypeHint 是如何使用的呢?
 

接下来本文将逐步解密 Flink 的类型和序列化机制(TypeInformation)。

clipboard.png

Flink 的类型系统源码位于 org.apache.flink.api.common.typeinfo 包,让我们对上图TypeInformation深入追踪,看一下类的继承关系图:

clipboard.png

可以看到,上面两个图片是一一对应的,TypeInformation 类是描述一切类型的公共基类,它和它的所有子类必须可序列化(Serializable),因为类型信息将会伴随 Flink 的作业提交,被传递给每个执行节点。

由于 Flink 自己管理内存,采用了一种非常紧凑的存储格式(见官方博文),因而类型信息在整个数据处理流程中属于至关重要的元数据。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章