Flink内核原理、实现类型与序列化如何相互融合优化处理长尾数据流?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1500个文字,预计阅读时间需要6分钟。
1. DataStream类型系统1.1 物理类型1.2 逻辑类型1.3 类型推断1.4 类型提取时间
一、DataStream类型系统1.1物理类型1.2逻辑类型1.3类型推断1、类型提取的时机#DataStream.java在使用DataStream#map接口的时候上述代码使用匿名内部类来获取泛型信息,其中new TypeHint
3、Lambda函数的类型提取
Flink 类型提取依赖于继承等机制,但Lambda函数比较特殊,其类型提取是匿名的,也没有与之相关的类,所以其类型信息较难获取。
1)Java类型擦除的原因
a:避免JVM的重构。如果JVM将泛型类型延续到运行期,那么到运行期时JVM就需要进行大量的重构工作。
b:版本兼容。在编译期擦除可以更好地支持原生类型(Raw Type)。
2)Java泛型类型擦除规则
a:如果是继承基类而来的泛型,就用getGenericSuperclass(),转型为ParameterizedType来获得实际类型。
b:如果是实现接口而来的泛型,就用getGenericSuperclass(),针对其中的元素转型为ParameterizedType来获得实际类型。
c:Java泛型在字节码中会被擦除,并不总是擦除为Object类型,而是擦除到上限类型。
本文共计1500个文字,预计阅读时间需要6分钟。
1. DataStream类型系统1.1 物理类型1.2 逻辑类型1.3 类型推断1.4 类型提取时间
一、DataStream类型系统1.1物理类型1.2逻辑类型1.3类型推断1、类型提取的时机#DataStream.java在使用DataStream#map接口的时候上述代码使用匿名内部类来获取泛型信息,其中new TypeHint
3、Lambda函数的类型提取
Flink 类型提取依赖于继承等机制,但Lambda函数比较特殊,其类型提取是匿名的,也没有与之相关的类,所以其类型信息较难获取。
1)Java类型擦除的原因
a:避免JVM的重构。如果JVM将泛型类型延续到运行期,那么到运行期时JVM就需要进行大量的重构工作。
b:版本兼容。在编译期擦除可以更好地支持原生类型(Raw Type)。
2)Java泛型类型擦除规则
a:如果是继承基类而来的泛型,就用getGenericSuperclass(),转型为ParameterizedType来获得实际类型。
b:如果是实现接口而来的泛型,就用getGenericSuperclass(),针对其中的元素转型为ParameterizedType来获得实际类型。
c:Java泛型在字节码中会被擦除,并不总是擦除为Object类型,而是擦除到上限类型。

