Flink内核原理、实现类型与序列化如何相互融合优化处理长尾数据流?

2026-04-02 00:220阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1500个文字,预计阅读时间需要6分钟。

Flink内核原理、实现类型与序列化如何相互融合优化处理长尾数据流?

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分钟。

Flink内核原理、实现类型与序列化如何相互融合优化处理长尾数据流?

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类型,而是擦除到上限类型。

阅读全文