Apache Flink 进阶(五):数据类型和序列化
为 Flink 量身定制的序列化框架
为什么要为 Flink 量身定制序列化框架?
Flink 序列化的最佳实践
- 注册子类型:如果函数签名只描述了超类型,但是它们实际上在执行期间使用了超类型的子类型,那么让 Flink 了解这些子类型会大大提高性能。可以在 StreamExecutionEnvironment 或 ExecutionEnvironment 中调用 .registertype (clazz) 注册子类型信息。
- 注册自定义序列化:对于不适用于自己的序列化框架的数据类型,Flink 会使用 Kryo 来进行序列化,并不是所有的类型都与 Kryo 无缝连接,具体注册方法在下文介绍。
- 添加类型提示:有时,当 Flink 用尽各种手段都无法推测出泛型信息时,用户需要传入一个类型提示 TypeHint,这个通常只在 Java API 中需要。
- 手动创建一个 TypeInformation:在某些 API 调用中,这可能是必需的,因为 Java 的泛型类型擦除导致 Flink 无法推断数据类型。
对于非泛型类,直接传入 class 对象即可。
PojoTypeInfo<Person> typeInfo = (PojoTypeInfo<Person>) TypeInformation.of(Person.class);
对于泛型类,需要通过 TypeHint 来保存泛型类型信息。
final TypeInfomation<Tuple2<Integer,Integer>> resultType = TypeInformation.of(new TypeHint<Tuple2<Integer,Integer>>(){});
预定义常量。
- 自定义 TypeInfo 和 TypeInfoFactory。
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
Env. registerType(typeClass);
实践–Kryo 序列化
- 强制使用 Avro 来代替 Kryo。
- 为 Kryo 增加自定义的 Serializer 以增强 Kryo 的功能。
Flink 通信层的序列化
- 何时确定 Function 的输入输出类型?
- 何时确定 Function 的序列化/反序列化器?
- 何时进行真正的序列化/反序列化操作?这个过程与 TypeSerializer 又是怎么联系在一起的呢?
更多 Apache Flink 基础篇及进阶篇完整教程回顾:
Apache Flink 零基础入门教程
▼ 进阶篇
▼ 基础篇
Apache Flink 及大数据领域盛会 Flink Forward Asia 2019 将于 11月28-30日在北京举办,阿里、腾讯、美团、字节跳动、百度、英特尔、DellEMC、Lyft、Netflix 及 Flink 创始团队等近 30 家知名企业资深技术专家齐聚国际会议中心,与全球开发者共同探讨大数据时代核心技术与开源生态。点击「阅读原文」了解更多精彩议程。
▼
Apache Flink 进阶(五):数据类型和序列化相关推荐
- Apache Flink 进阶入门(二):Time 深度解析
前言 Flink 的 API 大体上可以划分为三个层次:处于最底层的 ProcessFunction.中间一层的 DataStream API 和最上层的 SQL/Table API,这三层中的每一层 ...
- Apache Flink流处理(五)
本章介绍Flink的DataStream API的基础知识.我们将展示一个标准的Flink流式应用程序的结构和组件,还会讨论Flink的类型系统及其支持的数据类型,并给出数据转换和分区转换.我们将在下 ...
- Flink之数据类型和序列化
本文根据 Apache Flink 系列直播整理而成,由 Apache Flink Contributor.360 数据开发高级工程师马庆祥老师分享.文章主要从如何为Flink量身定制的序列化框架.F ...
- Apache Flink 零基础入门(十五)Flink DataStream编程(如何自定义DataSource)
数据源可以通过StreamExecutionEnvironment.addSource(sourceFunction)方式来创建,Flink也提供了一些内置的数据源方便使用,例如readTextFil ...
- Apache Flink 零基础入门(五)Flink开发实时处理应用程序
使用Flink + java实现需求 环境 JDK:1.8 Maven:3.6.1(最低Maven 3.0.4) 使用上一节中的springboot-flink-train项目 开发步骤 第一步:创建 ...
- Apache Flink介绍、架构、原理以及实现
文章目录 一 Flink简介 1.1 什么是flink 1.2 flink的特点 1.3 编程API 二 Flink架构 2.1 架构图 2.2 运行组件 2.3 关键词含义 三 Flink原理 3. ...
- Apache Flink
Apache Flink 1 Flink的特点 2 流式计算架构 2.1 Lambda架构 2.2 Kappa架构 2.3 IOTA架构 3 Flink部署 3.1 Standalone模式 3.2 ...
- 阿里云大学Apache Flink大数据学习笔记
之前有看过一些基础的大数据课程,现在又回来发现这里的课程更新还是蛮快的,讲的内容干货也很多,继续学习一下,下面是一些主要内容说明. 地址:https://developer.aliyun.com/le ...
- 1.13.、1.14.Flink 支持的DataType和序列化、Flink Broadcast Accumulators Counters Distributed Cache
1.13.Flink 支持的DataType和序列化 1.13.1.Flink支持的DataType 1.13.2.Flink的序列化 1.14.Flink Broadcast & Accum ...
- 年度回顾 | 2019 年的 Apache Flink
2019 年即将落下帷幕,这一年对于 Apache Flink 来说是非常精彩的一年,里程碑式的一年.随着这一年在邮件列表发送了超过 1 万封邮件,JIRA 中超过 4 千个 tickets,以及 G ...
最新文章
- 垃圾“程序是怎样练成的”——关于《C程序设计伴侣》第A章(四)
- FPGA笔录(2)-触发器与锁存器原理
- Day 06 元组,字典,集合
- dependency报红_解决IDEA中Maven依赖包导入失败报红问题(总结最有效8种解决方案)...
- iNeuOS工业互联网操作系统,智慧用电测控应用案例
- 2019-02-21-算法-进化
- 升级oracle spu,关于Oracle数据库PSU/SPU/BundlePatch的补丁号变化
- linux u盘刻录软件,Deepin Linux下刻录Windows安装U盘:WoeUSB的介绍和应用
- 使用Sci-kit学习和XGBoost进行多类别分类:使用Brainwave数据的案例研究
- 别再谈Python2与Python3区别, 反正我一个按钮随意转换代码!
- QT5开发及实例学习之一main()函数相关内容介绍
- python电脑下载什么软件-python官网有几个下载文件?有什么不同?
- UVa 674 Coin Change(完全背包)
- prerenderspaplugin可以抓取动态数据吗_RPA编程思路之数据抓取
- Stata进行logistic回归绘制列线图并做内部验证
- 如何应对美国对开源项目的出口管制?这是Linux基金会的建议
- 未检测到正确安装的网络适配器_网络适配器图标出现黄色感叹号的解决办法
- 唐巧访谈: iOS大V的技术进阶之路
- 线圈绕制中漆包线的简单介绍
- cmd命令方式启动服务